2012-09-01 78 views

回答

-1

它只是表示它是一个符号而不是字符串。在红宝石中,通常使用符号而不是字符串。

{:foo => value} 
{'foo' => value} 

它基本上是表达字符串的简短方式。它不能包含空格,因为你可以想象,所以符号通常使用下划线。

试试这个你自己:

foo = :bar 
foo.to_s # means to string 
baz = 'goo' 
baz.to_sym # means to symbol 
+0

其实,关于符号位不能容纳空格是错误的;一个符号可以容纳任何一个字符串可容纳':“hello world”包含一个空格,但它是一个完全有效的符号。字符串和符号之间的区别在于,每次引用相同的符号时,符号总是会在内存中占据相同的位置。如果你以正确的方式使用它,这是很好的,因为它可以节省内存。这很糟糕,因为如果你不这样做,它会消耗内存。请参阅:[Symbol](http://www.ruby-doc.org/core-1.9.3/Symbol.html)。 –

+2

将符号放在“基本上是表达一个字符串的速记方式”是非常错误和误导的。符号不是字符串。 –

+0

@AndrewMarshall我不认为符号应该用作字符串;这是使用符号的不好方法之一,而且很糟糕,尤其是对于Web开发。对不起,如果这样的话。 –