6

Why isn't [1..5] == [1,2,3,4,5]?

Why isn't [1..5].to_a == [1,2,3,4,5]?

How to convert from [1..5] to [1,2,3,4,5]?

4

2 に答える 2

18

[1..5]範囲オブジェクトの 1 つの要素のみを持つ配列です。1..5

[1..5].to_aまだです[1..5]

(1..5).to_a[1,2,3,4,5]

于 2012-09-10T01:59:03.897 に答える
2

[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 > 
于 2012-09-10T01:58:06.970 に答える