2

多次元配列に関するRubyの演習eachでは、多次元配列の内部要素にアクセスするには、メソッドの2つのインスタンスが必要であると述べています。以下:

x = [[1,2],[3,4],[5,6]]
x.each do |a|
  a.each do |b|
    puts b
  end
end

戻る必要があります:

# 1
# 2
# 3
# 4
# 5
# 6

eachただし、2つの方法を使用する必要はありません。私がするだけなら

x.each { |a| puts a }

同じ結果が得られます。の単一のインスタンスは、eachすでに多次元配列の内部レベルに移動しているようです。

その場合、どのようにして最初のレベルにアクセスしますか?言い換えれば、どうすれば次のようになりますか?

# [1,2]
# [3,4]
# [5,6]
4

3 に答える 3

3

Rubyには3つの異なる印刷機能があります。Rubyプロンプトでそれらを試してみましょう。

> puts [1,2]
1
2
=> nil

> p [1,2]
[1, 2]
=> [1, 2]

> print [1,2]
[1, 2]=> nil

に慣れていない場合はirb、太い矢印に続く式=>がステートメントの戻り値です。

于 2013-03-03T15:54:01.973 に答える
1

さらに、あなたがただするなら

puts x

まったく同じ結果が得られます。これは、puts配列を特別な方法で処理するためです。すべての要素を列挙しputs、それらを個別に呼び出します。(ご想像のとおり、これは再帰的です)。

これにより、おおよそ必要な出力が得られます。

x.each {|a| p a}

また

x.each {|a| puts a.inspect }

出力

# >> [1, 2]
# >> [3, 4]
# >> [5, 6]
于 2013-03-03T15:55:37.160 に答える
0
x.each { |a| puts a }

これにより、x配列の各要素にプットが呼び出されます。

それはすることと同じです:

puts [1,2]
puts [3,4]
puts [5,6]

配列を配置すると、見たようにフォーマットされます。

于 2013-03-03T15:54:45.380 に答える