我意识到哈希中的符号键是不可变的,而字符串键是可变的,但是我仍然不明白为什么这会导致这些结果...
[5] pry(main)> a[:b] = "c"
=> "c"
[6] pry(main)> a["b"]
=> nil
[7] pry(main)> a[:b]
=> "c"
"a[:b]"
不会变成幕后的a["b"]
吗?
答案 0 :(得分:2)
否,不应该,:b
是与'b'
不同的对象,因此,除非a
是具有无差别访问权限的哈希,否则a[:b]
很可能返回不同的对象比a['b']
的结果。
BTW Ruby实际上是动态类型的,它也是非常强类型的-隐式类型转换在这里很少发生。