我發現哈希分配代碼,如下:這個散列的定義是如何工作的?
@defeat = {r: :s, p: :r, s: :p}
# => {:r=>:s, :p=>:r, :s=>:p}
爲什麼是作爲符號生成此哈希鍵?這是做這個的簡短形式嗎?
defeat[:r] = :s
defeat[:p] = :r
defeat[:s] = :p
是否有這種哈希風格的名稱?
我發現哈希分配代碼,如下:這個散列的定義是如何工作的?
@defeat = {r: :s, p: :r, s: :p}
# => {:r=>:s, :p=>:r, :s=>:p}
爲什麼是作爲符號生成此哈希鍵?這是做這個的簡短形式嗎?
defeat[:r] = :s
defeat[:p] = :r
defeat[:s] = :p
是否有這種哈希風格的名稱?
A Hash可以通過使用其隱含的形式很容易地創建的:
grades = { "Jane Doe" => 10, "Jim Doe" => 6 }
散列允許替代語法形式時鑰匙總是符號。取而代之的
options = { :font_size => 10, :font_family => "Arial" }
你可以把它寫成:
options = { font_size: 10, font_family: "Arial" }
@defeat = {r: :s, p: :r, s: :p}
現在,所有鍵符號。這就是爲什麼你的例子Hash
是一個有效的構造,自1.9以來已經引入。
當您使用哈希樣式{key:value}時,您實際上正在聲明該鍵的符號。就像奧雅納的例子一樣,{:key => value}與隱式形式是一樣的。因此,無論何時您使用:而不是=>在散列中,您都將創建一個符號作爲密鑰。
在您的示例中,您正在爲您的鍵和值創建符號。
{key: :value } # both are symbols
謝謝,當然我找到了解決辦法,要求太之後:http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals#Hashes。 – slm 2014-10-07 17:15:29