为什么散列a对于a [:b]与a [“ b”]不会返回相同的结果?

问题描述 投票:0回答:2

我意识到哈希中的符号键是不可变的,而字符串键是可变的,但是我仍然不明白为什么这会导致这些结果...

[5] pry(main)> a[:b] = "c"
=> "c"
[6] pry(main)> a["b"]
=> nil
[7] pry(main)> a[:b]
=> "c"

"a[:b]"不会变成引擎盖下的a["b"]吗?

ruby-on-rails ruby hash key
2个回答
0
投票

[不,不应该,:b是与'b'不同的对象,因此,除非a是具有不同访问权限的哈希,否则a[:b]最有可能返回与a['b']不同的结果。

BTW Ruby实际上是动态类型的,它也是非常强类型的-隐式类型转换在这里很少发生。


0
投票

根据文档:

Element Reference-检索与键对应的值对象宾语。如果找不到,则返回默认值(请参见Hash :: new详细信息)。>

检索与键对象相对应的值对象

。如果您要查找"b",则"b":b不同,因此就是错误。
© www.soinside.com 2019 - 2024. All rights reserved.