在 Ruby 中,为什么这两个操作对于空数组和散列是不同的?
空数组:
[].to_s.to_sym => :[]
空哈希:
{}.to_s.to_sym => :"{}"
它们并没有真正的不同,只是它们的显示方式不同。该{
字符不能作为符号的开头,因此用引号引起来。如果你想创建一个包含 a 的符号,你会做同样的事情-
,否则它会被解释为减法运算符。事实上,您可以进入 IRB 并测试引号不会真正影响交易品种。
:[] == :"[]" #=> true
因此,基本上,一个可以使用更短的形式,而另一个必须更详细,以便解析器能够理解它。但两者的含义或形式没有本质区别。
因为 [] 的字符串表示是“[]”,而 {} 的字符串表示是“{}”。顺便说一句,:[]
等于:"[]"
。不同之处在于你可以写:"[]"
不带括号的符号,但你不能这样做,因为:"{}"
Ruby 语法不允许这样做。