2011-06-24 12 views
13

私はRubyでinsert関数が何をするのか理解しようとしています。.insertはどのように機能しますか?

私はGoogleとruby-doc.comと相談しましたが、この説明は(一見)不思議な機能を説明するには不十分です。

は、ここで私を混乱させているものです:上げ

a = %w{a b c d} 
puts a.insert(4, 5) output = a,b,c,d,5 

最初の質問は、なぜ4が挿入されていないのですか?

puts a.insert(2,2,6) 

出力は次のようになります。2回挿入されていないなぜこれが提起した

a 
b 
2 
6 
c 
d 

二つの質問が

  1. ですか?
  2. なぜbとcの間に2と6(一見すると)が任意に配置されていますか?

答えて

36

私は混乱が何であるか分かりません。

ary.insert(index, obj...) -> ary 

インサート( 負であってもよい)指定されたインデックスを持つ要素の前に与えられた値:Rubyのドキュメントから。

a = %w{ a b c d } 
a.insert(2, 99)   #=> ["a", "b", 99, "c", "d"] 
a.insert(-2, 1, 2, 3) #=> ["a", "b", 99, "c", 1, 2, 3, "d"] 

そこで、a.insert(2, 99)は、アレイが2.配列のインデックスは0から始まり、その結果、アレイ内のスロットであることに注意してくださいオフセット直前配列に99を挿入されています。

2番目の例では、負のオフセットが配列の末尾から数えられるため、配列[1,2,3]を最後から2番目の配列スロットに挿入しています。 が最後のインデックスで、-2が最後のインデックスです。

アレイのドキュメントはよくそれを言う:

配列は、CやJavaのように、0で 開始のインデックスを作成します。負のインデックスは、配列末尾の に相対的であると仮定されます。つまり、-1のインデックスは の最後の要素を示し、-2は配列の最後の要素の次の要素を示します。 。

これらは、Rubyだけでなく、一般的なプログラミングで学ぶために非常に重要な概念です。

5

最初のパラメータは挿入するインデックスであり、残りは挿入するアイテムです。

あなたは、単に配列の最後にいくつかの値を追加したい場合はdocsary.insert(index, obj...) → ary

としての機能をリストアップし、これを確認するように見えるでしょう(私はRubyの構文を知らないが、これは正しいはずです)Iたとえば、a.insert(a.length, 4, 5)またはa.insert(a.length, 2, 2, 6)に電話するといいでしょうか?

+0

ありがとうございます。しましょう。 – Bodhidarma

+3

配列の末尾に値を追加する場合は、['Array#push'](http://www.ruby-doc.org/core/classes/Array.html#M000226)メソッドを使用します。 –

関連する問題