2016-11-27 9 views

答えて

3

それがであるので、あなたはMY_VALUE_1ネストされた定数にアクセスすることができますMY_ENUMと同じスコープ:どちらの定数もクラスMyClassのスコープにあります。

[...]構文で新しいスコープを定義することが期待されていましたが、そうではありません。 Rubyでは、3つだけの事は新しいスコープを定義します。

  • def some_name
を使用して関数を定義する module SomeName
  • を使用してモジュールを定義class SomeName
  • を使用してクラスを定義します
  • 2

    配列リテラル([...])はスコープを定義していません。あなたはハッシュをしたいように見える:

    class MyClass 
        MY_ENUM = {:MY_VALUE_1 => "value1", :MY_VALUE_2 => "value2"} 
    end 
    
    MyClass::MY_ENUM[:MY_VALUE_1] #> value1 
    
    1

    あなたはクラス(隠れて)外での視認性を防ぐためにしたい場合は、「private_constant」を使用することができます

    private_constant :MY_VALUE_1 
    
    関連する問題