2012-09-01 120 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開發。對不起,如果這樣的話。 –