在不使用哈希火箭的情况下使用 class 字符串的键定义哈希?
Define a hash with keys of class string without using hash rockets?
可以使用哈希火箭语法定义哈希(具有 class 字符串的键),如下所示:
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"}
另请注意,在没有任何覆盖的情况下,我仍然无法找到将密钥设置为 class 字符串的方法:
b = {"name": "John"}
b
# => {:name=>"John"} # "name" (String) is stored as :name (Symbol)
据我所知,使用更现代的哈希表示法(不使用哈希火箭的表示法)无法用任何字符串键定义哈希。有什么办法,或者 =>
在使用 class 字符串的键定义散列时应该使用火箭吗?
documentation 真的很清楚:
The older syntax for Hash data uses the “hash rocket,” =>:
h = {:foo => 0, :bar => 1, :baz => 2} h # => {:foo=>0, :bar=>1,
> :baz=>2}
Alternatively, but only for a Hash key that's a Symbol, you can use a
newer JSON-style syntax...
可以使用哈希火箭语法定义哈希(具有 class 字符串的键),如下所示:
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"}
另请注意,在没有任何覆盖的情况下,我仍然无法找到将密钥设置为 class 字符串的方法:
b = {"name": "John"}
b
# => {:name=>"John"} # "name" (String) is stored as :name (Symbol)
据我所知,使用更现代的哈希表示法(不使用哈希火箭的表示法)无法用任何字符串键定义哈希。有什么办法,或者 =>
在使用 class 字符串的键定义散列时应该使用火箭吗?
documentation 真的很清楚:
The older syntax for Hash data uses the “hash rocket,” =>:
h = {:foo => 0, :bar => 1, :baz => 2} h # => {:foo=>0, :bar=>1,
> :baz=>2}
Alternatively, but only for a Hash key that's a Symbol, you can use a newer JSON-style syntax...