剛開始學Ruby,一會兒搞不清其中的Symbol(變量須要加:)和字符串有什麼區別,爲這麼要爲語言設計這麼一個東西。讓我很迷惑。函數
首先,字符串對象,是不一樣的。好比"String" "String"就不一樣,實例不一樣。spa
"String".equal?("String")
.net
這函數返回的是false。設計
可是相同名的符號,實例就相同了對象
:Str.equal?(:Str)blog
這函數返回的是true。字符串
那麼這有什麼做用呢?若是你創建一個Hash table:
table
Hash_Tab = {變量
"one" => 1,循環
"two" => 2,
.......
}
當咱們便利這張表的時候,每次循環,但又不修改key,它會新建立不少字符串對象,會增長處理器的開銷,那麼就能夠改爲Symbol。
Hash_Tab = {
:one => 1,
:two => 2,
.......
}
固然,符號和字符串均可以用來表示文本的一種方式。它們之間也能夠隨意轉換
references:
http://blog.csdn.net/besfanfei/article/details/7966987
http://blog.csdn.net/besfanfei/article/details/7966850