今天发现了一个有趣的结果,运行 times 方法的时候,返回值并不是块中最后一个表达式的值
比如说,
return_value = 3.times do |i| p i 555 end
运行发现,return_value 的值并不是 555,而是 3
是因为 times 返回值是 self~ 我一直都以为块的返回值都是最后一个表达式
times 最后一个表达式的返回值没有意义吧。。。。你需要 map。。
return_value应该是each而不是times的返回结果吧,each 迭代器返回数组或哈希的所有元素。
return_value
each
times
大兄弟,首先你的代码有问题,times 方法本身就能实现迭代了,为啥还要接个 each 方法?所以你这个问题表述也不对了,整个表达式的结果实际是 each 方法的返回值,而不是 times 的。
其次,api 文档里写的很清楚,无论 times 还是 each,在接了代码块的时候,返回的都是 self。多看 API 啊
嗯,each 是手误,哈哈,谢谢指正 。其实我就是想说刚发现 times 的返回结果是 self 而不是块的最后一个表达式的值
是的,times 返回的是接收者的值
嗯嗯,这里手误,已经改啦
多看看 文档
你不说,我都没关注过 times 的返回值 ...........受教了