【发布时间】:2013-01-14 23:18:35
【问题描述】:
我对 Ruby 中的返回值感到困惑。例如,如果我这样做
(1..5).each {|i| puts 2*i}
返回
=> 1..5
我只是不知道为什么会这样。有时它似乎返回多个变量?
【问题讨论】:
-
为什么要使用该代码的返回值?
-
1..5是单个范围对象。
标签: ruby
我对 Ruby 中的返回值感到困惑。例如,如果我这样做
(1..5).each {|i| puts 2*i}
返回
=> 1..5
我只是不知道为什么会这样。有时它似乎返回多个变量?
【问题讨论】:
1..5 是单个范围对象。
标签: ruby
ruby 中的一切都是一个表达式。* 表达式有一个值。 each 评估为它迭代的对象。在这种情况下,它是一个 Range 对象。
VALUE
rb_ary_each(VALUE array)
{
long i;
volatile VALUE ary = array;
RETURN_ENUMERATOR(ary, 0, 0);
for (i=0; i<RARRAY_LEN(ary); i++) {
rb_yield(RARRAY_PTR(ary)[i]);
}
return ary;
}
对于输入数组中的每个元素,它都会调用块,然后返回输入数组。
* 从我的脑海中,我无法在 ruby 中命名一个不是表达式的东西。
【讨论】:
each 是一个循环结构。它的目的是在循环内进行操作,而不是返回值。如果你想从循环内部返回一些东西,那么你可以使用map 或其他一些操作。