为什么不是[1..5] == [1,2,3,4,5]
?
为什么不是[1..5].to_a == [1,2,3,4,5]
?
如何从[1..5]
转换为[1,2,3,4,5]
?
答案 0 :(得分:18)
[1..5]
是一个只有一个元素的数组,范围对象1..5
[1..5].to_a
仍为[1..5]
(1..5).to_a
是[1,2,3,4,5]
答案 1 :(得分:2)
[1..5]
是一个包含一个元素的数组 - 一个范围对象,所有迭代它的尝试都将失败。数组中可以包含多种对象。在上面的示例中,我将范围视为一个范围,并直接从中生成任何数组。
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 >