它可能寫出這樣Ruby沒有常量值?
class Foo
MY_CONST = 100
end
,它也有可能去改變它Foo::MY_CONST = 123
屆時將有來自一個Ruby編譯器警告,但無論如何恆定將被改變。
那麼Ruby沒有常量值?
它可能寫出這樣Ruby沒有常量值?
class Foo
MY_CONST = 100
end
,它也有可能去改變它Foo::MY_CONST = 123
屆時將有來自一個Ruby編譯器警告,但無論如何恆定將被改變。
那麼Ruby沒有常量值?
它取決於您想要對常量採取何種操作。
如果你有一個
ARRAY = [1,2,3]
#and then
ARRAY << 4
紅寶石不會抱怨。
不過,如果你
ARRAY = [1,2,3].freeze
#and
ARRAY << 4
#RuntimeError: can't modify frozen Array
您仍然可以
ARRAY = [1,2,3,4]
#warning: already initialized constant ARRAY
如果freeze
FOO
,然後試圖重新分配FOO::MY_CONST
將創建拋出一個RuntimeError。
class FOO
MY_CONST = 100
end
FOO.freeze
FOO::MY_CONST = 123
給
RuntimeError: can't modify frozen Class
間接關係 - http://stackoverflow.com/questions/2441524/closest-ruby-representation-of-a-private-static-final-and-public-static - 最終#2442640 – dfb
也相關:http://stackoverflow.com/q/1977780/38765 –