2014-05-04 61 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