これは、Array クラスの Ruby ドキュメントの例です。
arr = [1, 2, 3, 4, 5, 6]
arr[2, 3]
=> [3, 4, 5]
arr[1, 2]
=> [2, 3]
うーん、なに?誰か助けて?[2,3] と [1,2] の動作の不一致はなぜですか?
これは、Array クラスの Ruby ドキュメントの例です。
arr = [1, 2, 3, 4, 5, 6]
arr[2, 3]
=> [3, 4, 5]
arr[1, 2]
=> [2, 3]
うーん、なに?誰か助けて?[2,3] と [1,2] の動作の不一致はなぜですか?
のドキュメントから取った太字の行を読んでくださいAccessing Elements
。
#[] メソッドを使用して、配列内の要素を取得できます。単一の整数引数 (数値インデックス)、引数のペア (開始と長さ)、または範囲を取ることができます。
引数のペア (開始と長さ)を使用している場合、開始インデックスから始まり、長さの要素が続く部分配列が返されます。
行中arr[1, 2]
- 1 は開始インデックスで、2 は長さです。のインデックスから開始し1
てarr
、2 つの要素をフェッチすることを意味します。
行arr[2, 3]
- 2 は開始インデックスで、3 は長さです。のインデックスから開始し2
てarr
、3 つの要素をフェッチすることを伝えていることを意味します。
こちらもお読みくださいArray#[]
。
ここに矛盾はありません (Ruby 配列のインデックスはゼロから始まります)
arr = [1, 2, 3, 4, 5, 6]
(0, 1, 2, 3, 4, 5) #=> their index/positions
arr[2,3] #=> arr[start,length]- start at 2nd index; it has value 3 and get 3 elements [3,4,5]
arr[1,2] #=> arr[start,length]- start at 1st index; it has value 2 and get 2 elements [2,3]
文字の配列を使用している場合は、見やすいかもしれません。
>> arr = %w[a b c d e f g]
=> ["a", "b", "c", "d", "e", "f", "g"]
>> arr[2, 3]
=> ["c", "d", "e"]
>> arr[1, 2]
=> ["b", "c"]
前述の 2 つの説明がここに当てはまりますが、求めているものと得ているものを翻訳しない可能性はほとんどありません。
配列のインデックスは 0 から始まるため、インデックス 2 から始まる 3 つの要素を要求すると、c、d、および e が得られます。
インデックス 1 から始まる 2 つの要素を要求すると、b と c が得られます。