可以使用散列火箭語法定義散列(帶有 String 類的鍵),如下所示:
h = {:name => 'Charles', "name" => 'John'}
有沒有辦法用另一種符號來定義它?
我試過:
a = {name: "Charles", "name": "John"}
(irb):14: warning: key :name is duplicated and overwritten on line 14
a
# => {:name=>"John"}
另請注意,在沒有任何覆寫的情況下,我仍然無法找到將鍵設為 S??tring 類的方法:
b = {"name": "John"}
b
# => {:name=>"John"} # "name" (String) is stored as :name (Symbol)
AFAIK 不可能使用更現代的散串列示法(不使用散列火箭的表示法)定義帶有任何字串鍵的散列。有什么辦法,或者=>在使用 String 類的鍵定義散列時應該使用火箭?
uj5u.com熱心網友回復:
檔案確實很清楚地說明了這一點:
哈希資料的舊語法使用“哈希火箭”=>:
h = {:foo => 0, :bar => 1, :baz => 2} h # => {:foo=>0, :bar=>1,
> :baz=>2}
或者,但僅對于作為 Symbol 的 Hash 鍵,您可以使用更新的 JSON 樣式語法...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/418365.html
標籤:
上一篇:為什么有人喜歡將類方法定義為`moduleSomeModuleextendself`而不是`classSomeClass;defself.method`?
