You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何当a与b相等时,该Ruby方法未返回nil?

问题解答:Ruby中get_sum方法为何在a等于b时能正确返回值?

先看你的代码实现:

def get_sum(a,b)
  a < b ? (a..b).sum : (b..a).sum
end

当a和b相等时,a < b的判断结果是false,所以三元运算符会执行冒号右侧的(b..a).sum。

这里的核心是Ruby**闭合范围(..)**的特性:如果范围的起始值和结束值相等,这个范围仅包含一个元素——就是那个相等的值。比如5..5对应的元素集合就是[5],调用sum方法后自然返回5,完全符合需求中“当a与b相等时返回a或b”的要求。

所以完全不需要额外添加return a if a==b的判断,因为三元运算符的两个分支已经覆盖了所有场景:

  • 当a < b时,计算从a到b的所有数字之和;
  • 当a >= b时(包含a == b的情况),计算从b到a的所有数字之和,而当两者相等时,这个范围的和就是它本身。

这种写法已经完美覆盖了所有情况,不会返回nil。

内容的提问来源于stack exchange,提问作者Leith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:00:28