[Note] Constant 常數

更詳細的介紹,例如constant的scope可參考這篇

http://www.rubyguides.com/2017/07/ruby-constants/

Constant的幾個重點:

  1. Ruby裡面的constant是可修改的
    不同其他語言,Ruby的constant是可以重新給值的,不過執行的時後會出現warning messages,所以可以修改並不代表我們就應該要去改constant的值
    example:

warning message告訴你之前已經定義過ABC這個constant了,但還是可以修改

2. constant不可以定義在methods裡面
constant定義在method裡會出錯,應該定義在method外面,建議定義在class的最上面
example:

出現 ‘dynamic constant assignment’

3. 變數在ruby當中只是一個指向物件的指標(pointers),沒有辦法避免常數被改變(指向另一個物件),一個比較好的做法是在常數指向的物件後面加上freeze
example:

例子中可以看到,當’hi’這個string object加上freeze後,試著在string後面加上其他字串,會出錯( ABC << ‘ruby’ 是要改變ABC常數指向的string object)

但如果重新把常數ABC 指向另外一個string object ‘hi ruby’ 只會出現warning message

ps. 在ruby 裡面所有的東西都是object, 包括string, nil, true, false

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.