2014-01-15 63 views
0

雖然試圖回答其他成員的問題時,我正好碰到這個奇怪的現象:#puts是否創建了新的散列?

puts :some_object => 'another_object' 

出人意料的是,輸出是這樣的:

{:some_object=>"another_object"}

這是什麼新devilry?看起來好像我已經使用#puts創建了一個散列,並且沒有使用正常的花括號語法。

我不能,雖然測試這個理論,因爲這只是產生一個錯誤:

puts (:some_object => 'another_object').class 

# => syntax error, unexpected =>, expecting ')' 

這是怎麼回事?

編輯:好,感謝bundacia的解釋,它現在很容易對我來說,測試並確認這是一個散列(而我不知道怎麼說之前做的):

def test(x) 
    puts x.class 
end 
test(:some_object => 'another_object') 

# => Hash 

許多謝謝!

+1

正常的Ruby語法,它有一些散列方便的方法。 –

回答

3

將散列傳遞給puts。在ruby中,如果傳遞給函數的最後一個參數是散列,則大括號是可選的。所以你的例子相當於:

puts({:some_object => 'another_object'}) 
+0

謝謝你。我必須說我發現這很奇怪,但是通過這個解釋,現在很容易確認課程。 – Kal

相關問題