それはこのようにRubyには定数がありませんか?
class Foo
MY_CONST = 100
end
を書くことは可能だし、それがFoo::MY_CONST = 123
ルビーコンパイラからの警告があります変更することも可能ですが、とにかく定数が変更されます。
Rubyには一定の値はありませんか?
それはこのようにRubyには定数がありませんか?
class Foo
MY_CONST = 100
end
を書くことは可能だし、それがFoo::MY_CONST = 123
ルビーコンパイラからの警告があります変更することも可能ですが、とにかく定数が変更されます。
Rubyには一定の値はありませんか?
それはあなたの定数で何をしたいのかによって決まります。
あなたは
ARRAY = [1,2,3]
#and then
ARRAY << 4
Rubyは文句を言わないだろうしている場合。
ただし、
ARRAY = [1,2,3].freeze
#and
ARRAY << 4
#RuntimeError: can't modify frozen Array
場合は、あなたはまだ
ARRAY = [1,2,3,4]
#warning: already initialized constant ARRAY
これらは意味的に定数なので、変更しないと期待できます。私はそれらを自由な定数と呼んでいます。http://pastie.org/4608297
これは変更することができます。たとえ人々がそれらを変えたいと思わないかもしれないとしても。 –
あなた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 –