Ruby的symbol

不要再理解成什麼「不會改變的String」了,這根本是把簡單的東西複雜化

symbol的原理很簡單,就是一個普通的identifier

寫程式的時候一定會常常遇到需要用數字代表某個意義的情況,譬如說我們可能會寫出一個function長這樣

void draw(int color)

然後就1代表紅色、2代表綠色這樣子傳進去

但是這樣很明顯違反了「No magic number」的程式設計原則,因此在C++的話,我們會用CONSTANT或是ENUM,在Java可能會用一個Class的static member來處理。

在Ruby裡面,當然也是可以用CONSTANT來解決,但是要自行為一個顏色對應到一個沒使用過的數字,依然是個很容易出錯的過程。因此就有了symbol的出現。

所以,symbol其實就是一個自動定義的常數,底層Ruby會確保各個symbol之間不會重複,也就是各個symbol一定可以當作獨一無二的identifier來使用。

Advertisements

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s