我正在做一個關於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