虽然学习Ruby我遇到了 “:” 运营商有时。通常我会看到它的形式
:symbol => value
这是什么意思?
虽然学习Ruby我遇到了 “:” 运营商有时。通常我会看到它的形式
:symbol => value
这是什么意思?
它只是表示它是一个符号而不是字符串。在红宝石中,通常使用符号而不是字符串。
{:foo => value}
{'foo' => value}
它基本上是表达字符串的简短方式。它不能包含空格,因为你可以想象,所以符号通常使用下划线。
试试这个你自己:
foo = :bar
foo.to_s # means to string
baz = 'goo'
baz.to_sym # means to symbol
其实,关于符号位不能容纳空格是错误的;一个符号可以容纳任何一个字符串可容纳':“hello world”包含一个空格,但它是一个完全有效的符号。字符串和符号之间的区别在于,每次引用相同的符号时,符号总是会在内存中占据相同的位置。如果你以正确的方式使用它,这是很好的,因为它可以节省内存。这很糟糕,因为如果你不这样做,它会消耗内存。请参阅:[Symbol](http://www.ruby-doc.org/core-1.9.3/Symbol.html)。 –
将符号放在“基本上是表达一个字符串的速记方式”是非常错误和误导的。符号不是字符串。 –
@AndrewMarshall我不认为符号应该用作字符串;这是使用符号的不好方法之一,而且很糟糕,尤其是对于Web开发。对不起,如果这样的话。 –
http://stackoverflow.com/questions/6337897/what-is-the-colon-operator-in-ruby可能重复 –