1

Ruby の戻り値について混乱しています。たとえば、

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

戻ります

=> 1..5

なぜそれが起こるのかわかりません。複数の変数を返す場合があるようです。

4

1 に答える 1

6

Ruby のすべては式です。* 式には値があります。each反復したオブジェクトに評価されます。この場合はRangeオブジェクトです。

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

入力配列のすべての要素に対してブロックを呼び出し、入力配列を返します。

*頭のてっぺんから、式ではないルビの名前を付けることはできません。

于 2013-01-14T13:41:55.083 に答える