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

时间:2019-12-20 16:08:36

标签: ruby-on-rails ruby hash key

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

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

"a[:b]"不会变成幕后的a["b"]吗?

1 个答案:

答案 0 :(得分:2)

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

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