Ruby的返回值

时间:2013-01-14 13:38:37

标签: ruby

我对Ruby中的返回值感到困惑。例如,如果我这样做

(1..5).each {|i| puts 2*i}

它返回

=> 1..5

我只是不知道为什么会这样。有时它似乎会返回多个变量?

1 个答案:

答案 0 :(得分:6)

ruby​​中的所有内容都是表达式。* Expression具有值。 each计算它迭代的对象。在这种情况下,它是一个Range对象。

看看definition of Array#each

               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;
}

对于输入数组中的每个元素,它调用该块,然后返回输入数组。

* 从我的头脑中,我不能用红宝石命名一个不是表达的东西。