2016-11-27 41 views

回答

3

您可以访问嵌套不断MY_VALUE_1,因为它是在与外部常数MY_ENUM的范围相同:两个常数都在MyClass的范围内。

您期望[...]结构定义一个新的作用域,但它不。在Ruby中,只有三件事情定义一个新的范围:

  • 定义使用class SomeName
  • 定义使用module SomeName
  • 定义使用功能的模块类def some_name
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 
相关问题