当我:symbol == :symbol
时,我发现它是真的。他们是一样的。
如果是这种情况,我们如何创建这样的数组:
a = [{:name=>"Michael"},{:name=>"John"}]
答案 0 :(得分:2)
查看以下代码:
a = [{:name=>"Michael"},{:name=>"John"}]
a.map(&:object_id) # => [70992070, 70992050]
这是因为a
是一个Hash数组,但它们是2个不同的哈希对象。在Ruby中,Hash
必须具有 uniq 键。但是2个不同的哈希可以使用相同的命名符号作为键。
答案 1 :(得分:2)
您似乎对哈希键感到困惑。一个哈希不能包含两次相同的密钥,但是两个不同的哈希可以具有与密钥相同的对象。例如:
a_key = "hello"
spanish = { a_key => "hola" }
french = { a_key => "bonjour" }
some_array = [spanish, french]
最重要的是,数组可能包含重复的对象(例如[1, 2, 1]
有效) - 但这些都不是重复的。包含相同键的两个哈希值仍然是不同的对象。
这样的阵列没什么特别的。事实上,数组中哈希的共同点是正常的,因为通常如果你想把东西放在一个数组中,这意味着它们有一些共同点可以用来处理它们方式。