我正在做一个关于ruby的教程,它要求3种方法来创建范围,哈希,数组。在ruby中创建范围,哈希,数组的三种方法
我只能想到2:(1..3)
和Range.new(1,3)
(对于散列和数组也是类似的)。
第三种方式是什么?
有问题的教程是The Odin Project
我正在做一个关于ruby的教程,它要求3种方法来创建范围,哈希,数组。在ruby中创建范围,哈希,数组的三种方法
我只能想到2:(1..3)
和Range.new(1,3)
(对于散列和数组也是类似的)。
第三种方式是什么?
有问题的教程是The Odin Project
你也可以做一个排除范围,使用(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::[]
(直接从文档所采取的示例):
Array.[](1, 'a', /^A/) # => [1, "a", /^A/]
Array[ 1, 'a', /^A/ ] # => [1, "a", /^A/]
[ 1, 'a', /^A/ ] # => [1, "a", /^A/]
同样有Hash::[]
。不确定关于Ranges;实际上,文档(据我所知)只提到文字和Range::new
。
我看不出为什么你会在字面上使用这些,但你去了。
我刚发现'new.array =%w(“foo bar”)'也适用。那个怎么样? (关于“w”代表什么意思?) – Heisenberg
'w'表示'空白分隔'。一旦你开始使用''''符号是非常光滑的。 [以下是可用修饰符列表](http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#The_25_Notation),它们使它更加有用。 –
@安妮是的,不敢相信我忘了那个。我用它所有的时间。 – iamnotmaynard
范围可以使用s..e和小号... E文字构成,也与::新。
使用..构造的范围从头到尾包含在内。 使用...创建的那些排除最终值。当用作迭代器时,范围返回序列中的每个值。
(0..2) == (0..2) #=> true
(0..2) == Range.new(0,2) #=> true
(0..2) == (0...2) #=> false
这可能不是我要找的,因为他们所要求的3种方式来创建数组/哈希为好。除了[1,2,3]和'Array.new'之外,还有第三个? – Heisenberg
我更新了我的答案以回答您问题的其他部分。 – Addison