# [Ruby筆記] 關於符號Symbol 在Ruby裡,「符號」是一種「物件」, 而在Ruby這個物件導向的語言中,他有什麼特別呢? ### 符號的意義 「符號」是一個自己帶有意義的物件,所以他的名字及內都容是不能更動的。 舉例來說,數字1就是「1」、2就「2」,我們不會說2是「1」,這感覺起來很抽象,用更具體的方法來説:台灣就是「台灣」,不會因為被外力影響就變成是「中國台灣」。 由上可知符號本身就帶有值,所以我們不能將他指定其他物件,但**變數**、**陣列**、**字串**這些就不一定了,想變更、指定內容都可以。 ``` :taiwan = china ==> 這樣是不行的 :javascript = java ==> 這樣也是不行的 ``` 每個物件在Ruby裡面都有屬於他們的**序號(object_id)**,而符號及數字的object_id都是固定的,比如`2.object_id #輸出固定為5 `同理符號也是會有一串固定的id。 相反的,字串的object_id每次輸出都是不同的。 --- ### 怎麼判斷這是不是符號呢? 在Ruby裡「符號」的型態就是在名字前面加上「 : 」冒號,所以當我們看到`:symbol`、`:name`時就會知道這代表的是符號。此外需要注意的是,雖然我們可以把符號當成數字看待,但不能將數字當作符號看待。 --- ### 出場時機 1. 作為Hash中的key因為不能隨意更動,符號不可變的特性以及它的查找、比較的速度比字串還快,很適合用來當 Hash 的 Key 2. Ruby裡定義ㄧ個方法method時,就會在 Ruby 空間產生一個名為 `:方法名稱` 的Symbol,且可以配合其他方法當參數/引數使用。 舉例:`attr_accessor :name` 、`.send(:gossip)` --- 參考資料:[為你自己學 Ruby on Rails](https://railsbook.tw/chapters/06-ruby-basic-2.html#symbol_class)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up