Ruby 裡的 Symbol
什麼是符號
在 Ruby 中什麼東西幾乎都是物件 , 那符號其實就是 有名字的物件(an object with a name)
對於字串來說像是 “8======3” 這是一個字串物件
irb(main):001:0 "8======3".class
String
對於 0 這是一個數字物件
irb(main):002:0 0.class
Integer
:handsome 這是一個符號物件
irb(main):003:0 :handsome.class
Symbol
不過要注意的是,符號不是一個變數就只是一個值而已
irb(main):004:0 :ruby
:ruby
irb(main):005:0 1
1
這裡的1並不是變數,就是個值所以當我打出1的時候就給我1的值,當我打出:ruby就給我:ruby
所以當用下面這種寫法的時候,就會爆出語法錯誤
原因是左邊的 :ruby 是一個值,右邊又是一個值
irb(main):006:0 :ruby = "Emerald"
SyntaxError ((irb):6: syntax error, unexpected '=', expecting end-of-input)
:ruby = "Emerald"
^
應該要左邊是變數去接右邊的值
irb(main):007:0 ruby = :ruby
:ruby
irb(main):008:0 love = :alice
:alice
所以符號不是變數,就只是一個值或是說物件
另外可以使用 .to_sym / .intern 來字串轉符號
或是用 .to_s / .id2name來符號轉字串
irb(main):009:0 "alice".to_sym
:alice
irb(main):010:0 "alice".intern
:alice
irb(main):011:0 :alice.to_s
"alice"
irb(main):012:0 :alice.id2name
"alice"

留言
張貼留言