2014-05-04 60 views

回答

1

你也可以做一个排除范围,使用(1...4),这要是变成一个数组将成为[1, 2, 3]

(1..3)是一个包容的范围,所以它包含了所有的数字,从1到3,但如果使用(1...3),则使用3个点而不是2个使其成为唯一,因此它包含从1到最高但不包括3的所有数字。

对于数组和散列,#to_a,Array#[] ,#to_h,a nd Hash#[]将工作。

(1..3).to_a 
=> [1, 2, 3] 

Array[1, 2, 3] 
=> [1, 2, 3] 

[[1, 2], [3, 4], [5, 6]].to_h 
=> {1=>2, 3=>4, 5=>6} 

Hash[ [[1, 2], [3, 4], [5, 6]] ] 
=> {1=>2, 3=>4, 5=>6} 

但他们可能寻找的阵列和散列部Array#[]Hash#[]

+0

这可能不是我要找的,因为他们所要求的3种方式来创建数组/哈希为好。除了[1,2,3]和'Array.new'之外,还有第三个? – Heisenberg

+0

我更新了我的答案以回答您问题的其他部分。 – Addison

1

对于阵列有Array::[](直接从文档所采取的示例):

Array.[](1, 'a', /^A/) # => [1, "a", /^A/] 
Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/] 
[ 1, 'a', /^A/ ]   # => [1, "a", /^A/] 

同样有Hash::[]。不确定关于Ranges;实际上,文档(据我所知)只提到文字和Range::new

我看不出为什么你会在字面上使用这些,但你去了。

+1

我刚发现'new.array =%w(“foo bar”)'也适用。那个怎么样? (关于“w”代表什么意思?) – Heisenberg

+1

'w'表示'空白分隔'。一旦你开始使用''''符号是非常光滑的。 [以下是可用修饰符列表](http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#The_25_Notation),它们使它更加有用。 –

+0

@安妮是的,不敢相信我忘了那个。我用它所有的时间。 – iamnotmaynard

2

范围可以使用s..e小号... E文字构成,也与::新

使用..构造的范围从头到尾包含在内。 使用...创建的那些排除最终值。当用作迭代器时,范围返回序列中的每个值。

(0..2) == (0..2)   #=> true 
(0..2) == Range.new(0,2) #=> true 
(0..2) == (0...2)   #=> false 

Read More Here