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

Ruby自定义each方法返回nil问题咨询(零基础学习者求助)

解决Ruby自定义each方法返回nil的问题

嘿,作为编程新手遇到这个问题很正常,咱们一步步来拆解:

问题根源

你写的custom_each方法最后没有显式返回值,而Ruby中方法默认会返回最后一行代码的执行结果。你的方法最后一行是while循环,循环执行完后没有返回任何内容,所以方法默认返回nil。

而Ruby内置的each方法设计是:遍历数组执行传入的块,但最终返回调用它的原数组,这样能支持链式操作(比如ages.each { ... }.sort)。

修改方案

只需要在方法最后加上返回原数组的代码就行,比如:

def custom_each(array)
  index = 0
  while index < array.length
    yield array[index]
    index += 1
  end
  array # 显式返回原数组,和内置each行为一致
end

ages = [12, 45, 67, 89]
p custom_each(ages) { |num| num * 2 } # 现在会输出原数组 [12, 45, 67, 89]

额外补充:each和map的区别

你正在学习map方法,这里刚好可以区分下:

  • each的作用是遍历元素执行块代码,它不关心块的返回值,最终返回原数组;
  • map的作用是收集块的返回值,生成新数组。如果想得到你块里num * 2的结果,应该实现custom_map:
def custom_map(array)
  result = []
  index = 0
  while index < array.length
    result << yield(array[index]) # 收集块的返回值
    index += 1
  end
  result # 返回新数组
end

p custom_map(ages) { |num| num * 2 } # 输出 [24, 90, 134, 178]

内容的提问来源于stack exchange,提问作者Ayo D Adesanya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:32:51