6

为什么不是[1..5] == [1,2,3,4,5]

为什么不是[1..5].to_a == [1,2,3,4,5]

如何从 转换[1..5][1,2,3,4,5]

4

2 回答 2

18

[1..5]是一个只有一个元素的数组,范围对象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.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 回答