3

含まれているメソッド内でのみアクセスできる定数を作成したいと考えています。他の言語では、次のようにするかもしれません:

void function()
{
  const int MAX = 25;
  int array[MAX];

  //DO SOMETHING
}
void function2()
{
   const int MAX = 50;
   int array[MAX];
   //DO SOMETHING ELSE
}

どちらのメソッドMAXも、クラスに対してグローバルではありません。私はデータ隠蔽を信じています。Ruby でこれを行う方法があるかどうか知りたいです。メソッド内で定数を作成できますか?

4

3 に答える 3

3

いいえ、できませんが、Ruby の定数は実際には定数ではないため、できたとしてもあまり意味がありません。

MY_CONST = 'foo'
MY_CONST << 'bar'
MY_CONST  #=> 'foobar'
MY_CONST = 'baz' # warning: already initialized constant MY_CONST

オブジェクト自体が変更されることを心配している場合 (参照ではなく、オブジェクトを返す場合はより意味があります)、freezeオブジェクトが変更されないようにしたい場合があります (ただし、それは浅いものであることに注意してください)。凍結、深凍結については、IceNineを参照してください)。

于 2013-07-15T05:57:50.123 に答える