雖然學習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可能重複 –