1

私はいくつかの koans 演習を行っていますが、配列内のシンボルで返される値を理解するのに問題があります。誰かが以下が等しい理由を説明したり、適切な知識を推測できる主題に関する良い記事を提案したりできますか??? これは文字列とは異なります。

    array = [:peanut, :butter, :and, :jelly]

     assert_equal [:and, :jelly], array[2,2]
     assert_equal [:and, :jelly], array[2,20]
     assert_equal [:jelly, :peanut], array[4,0]
     assert_equal [:jelly, :jelly], array[4,100]
4

4 に答える 4

1

今すぐ、そしていつでもドキュメントをチェックしてください: ary[start, length] → new_ary or nil.

サブ配列を返します。ここで、「開始」は配列の最初の要素のインデックスでありlength、サブ配列の長さを表します。サブアレイを ary の最後までlength >= ary.size - start取得する場合。start

あなたの場合:

array = [:peanut, :butter, :and, :jelly]   
array[2, 2] #=>  [:and, jelly]
array[2,20] #=>  [:and, jelly]
array[4, 0] #=> []; length of empty array is 0!
array[4, 100] #=> []; well, okay. There's no element with index equal to 4.
             # but holy documentation says "empty array is returned when 
             # the starting index for an element range is at the end of 
             # the array."
array[5, 0]  #=> nil; there's nothing at 5th position.
array[-2, 2] #=> [:and, jelly]; :)

配列内の文字列はこのように動作しないと言いましたか? あなたは黒魔術に直面しているに違いありません。例を挙げていただけますか?

于 2013-11-13T23:57:28.930 に答える
0

values_atメソッドも見てください:

array = [:peanut, :butter, :and, :jelly]
p array.values_at(2,0) #=> [:and, :peanut]
于 2013-11-14T08:25:23.213 に答える