5

このように書くことは可能です

class Foo
 MY_CONST = 100
end

そしてそれを変更することも可能ですFoo::MY_CONST = 123

Rubyコンパイラからの警告がありますが、とにかく定数が変更されます。

では、Rubyには定数値がありませんか?

4

3 に答える 3

2

それは、定数に対してどのようなアクションを実行したいかによって異なります。

あなたが持っている場合

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
于 2012-08-29T17:41:21.513 に答える
1

の場合freeze FOO、再割り当てを試みるとFOO::MY_CONST、RuntimeError が作成されます。

class FOO
  MY_CONST = 100
end

FOO.freeze
FOO::MY_CONST = 123

与える

RuntimeError: can't modify frozen Class
于 2012-08-29T23:31:07.283 に答える
0

それらは意味的に一定であるため、人々がそれらを変更しないことを期待できます。私はそれらをリベラルな定数と呼んでいます。http://pastie.org/4608297を参照してください。

于 2012-08-29T16:11:03.523 に答える