なぜですか[1..5] == [1,2,3,4,5]
?なぜ[1..5] == [1,2,3,4,5]でないのですか?
なぜですか[1..5].to_a == [1,2,3,4,5]
?
どのように[1..5]
を[1,2,3,4,5]
に変換しますか?
なぜですか[1..5] == [1,2,3,4,5]
?なぜ[1..5] == [1,2,3,4,5]でないのですか?
なぜですか[1..5].to_a == [1,2,3,4,5]
?
どのように[1..5]
を[1,2,3,4,5]
に変換しますか?
[1..5]
は一つだけの要素を持つ配列、範囲オブジェクトであります1..5
[1..5].to_a
まだ[1..5]
ですは[1,2,3,4,5]
[1..5]
は、1つの要素(範囲オブジェクト)を持つ配列です。すべての反復処理が失敗します。配列には多くの種類のオブジェクトを含めることができます。上記の私の例では、範囲を単なる範囲として扱い、配列を直接作成しています。
1.9.3-p125 :008 > (1..5).to_a # Note regular parens.
=> [1, 2, 3, 4, 5]
1.9.3-p125 :009 >
密接あなたが述べたものをより多くを行うには - [1..5]で始まる - あなたができる:
1.9.3-p125 :013 > newarray = []
1.9.3-p125 :014 > [1..5][0].each {|e| newarray << e}
=> 1..5
1.9.3-p125 :015 > newarray
=> [1, 2, 3, 4, 5]
1.9.3-p125 :016 >
です。[1..5]は '[(1..5)](1つのRangeオブジェクトを含む配列)と同じです。 'inspect'はこれが理解されていないとあまり有用ではありませんが、物事をクリアするはずのREPLに対して' [1..5] [0] 'を試してみてください。 –
'[* 1..5]'で範囲を拡大する –