0

Rubyで配列を勉強しています。具体的には、Ruby プログラミング 1.9 ブックでa[start, count]およびを使用して配列を操作する効果。a[lower_range..upper_range]

具体的には、私が持っている場合:

a = [1, 3, 5, 7, 9]

そして私は次のことをします:

a[2, 2] = 'cat'

次の出力を取得します。a => [1, 3, "cat", 9]

私が期待していたものの代わりに[1, 3, "cat", "cat", 9]

編集:ご意見をお寄せいただきありがとうございます。提案されたすべての方法が機能しました。今、私は分かる。

提案された Array.new メソッドを好みます。a[2, n] のような任意の範囲で、単純に使用できるため、a[2, n] = Array.new(n, "cat")

素晴らしい、みんなありがとう。

4

4 に答える 4

4

等号の左側のすべてを右側のすべてに置き換えると考えてください。配列を 1 つの要素に置き換えています。複数の要素に置き換えたい場合は、a[2, 2] = Array.new(2, 'cat')

于 2013-05-10T21:47:45.133 に答える
3

間違った方法を選択します。[]要素の割り当てを行います (選択した範囲を別の範囲に置き換えます)

あなたが実際に探しているのはfill

a = [1, 3, 5, 7, 9]
#=> [1, 3, 5, 7, 9]
a.fill('cat', 2, 2)
#=> [1, 3, "cat", "cat", 9]
于 2013-05-10T21:55:26.980 に答える
3

インデックス 2 の 2 つの値が「cat」に置き換えられます。これは次の場所で確認できます。

a = [1, 3, 5, 7, 9]
a[2,2] # => = [5, 7]
a[2,2] = 'cat'
a # => [1, 3, 'cat', 9]

そのため、その範囲内のすべてのインデックスではなく、配列のその部分array[start, count]array[range_start .. range_end]置き換えます。

于 2013-05-10T21:51:55.827 に答える
2

要素の割り当ては、定義されたスコープの置き換えのように機能します。この使用方法については、Ruby のドキュメントを参照してください。この割り当てにより、位置 2 からの 2 つの配列エントリが RHS 式に置き換えられます。次の式は、期待した結果を達成するはずです。

a[2, 2] = ['cat', 'cat']

:)

于 2013-05-10T21:57:12.690 に答える