2016-07-01 6 views
1

は、私はこのコードに出くわした:私はルビーの配列のために、この構文を見たことがないと私は、検索した後、その上に多くを見つけることができなかったこの配列の構文はRubyではどういう意味ですか?

@board=Array.new(7){Array.new(7)} 

。私は実際にここで中括弧で何が起こっているのかは分かりません。私は誰かが私に簡単な説明を与えることを望んでいた。ありがとう!

+1

をここにドキュメントを読む:ドキュメントに私は理解してhttp://ruby-doc.org/core-2.2.0/Array.html#method-c-new –

+0

ときを説明するために

彼らはハッシュの例を使用します。私はこれがちょうど2-d配列を作ると仮定していますが、私はちょうど理由を理解していないと思います。 –

+0

これは明らかに '...最後の形式では、指定されたサイズの配列が作成されます。この配列の各要素は、要素のインデックスを指定されたブロックに渡して戻り値を格納することによって作成されます。 ' - つまり、' @ board'のインデックスにアクセスすると、それは7要素の配列になります - はい、2D配列を作成する方法です。 –

答えて

3

newのブロック構文を使用して、必要に応じてindex数に基づいて、個々の配列要素を初期化することを可能にします。あなたのケースでは、インデックスが使用されていないが、すべての7つの配列要素は、7つの要素のネストされた配列で初期化されているので、あなたは7x7の「マトリックス」を取得します。

$ irb 
irb(main):001:0> Array.new(7) 
=> [nil, nil, nil, nil, nil, nil, nil] 

$ irb 
irb(main):001:0> require 'pp' 
=> true 
irb(main):002:0> pp Array.new(7) {Array.new(7)} 
[[nil, nil, nil, nil, nil, nil, nil], 
[nil, nil, nil, nil, nil, nil, nil], 
[nil, nil, nil, nil, nil, nil, nil], 
[nil, nil, nil, nil, nil, nil, nil], 
[nil, nil, nil, nil, nil, nil, nil], 
[nil, nil, nil, nil, nil, nil, nil], 
[nil, nil, nil, nil, nil, nil, nil]] 
+0

さて、それは私にとって今より意味があります。私は私が推測するボンネットの下で何が起こっているのか本当に理解していませんでした。ありがとう! –

+1

@ハリーB。より多くの回答を待っていない限り、この回答を受け入れることを検討してください:http://stackoverflow.com/help/someone-answers – SoAwesomeMan

関連する問題