说我有:
class MyClass
MY_ENUM = [MY_VALUE_1 = 'value1', MY_VALUE_2 = 'value2']
end
这样的事情是可能的:
p MyClass::MY_VALUE_1 #=> "value1"
为什么呢? MY_VALUE1
MY_VALUE_2
和[]
范围不是恒定范围
答案 0 :(得分:3)
您可以访问嵌套常量MY_ENUM
,因为它与外部常量MyClass
在同一范围内:两个常量都在类[...]
的范围内。
您希望class SomeName
构造定义新范围,但事实并非如此。在Ruby中,只有三件事定义了一个新范围:
module SomeName
def some_name
<script>
$('.mobile-menu-link').click(function(){
$('body').toggleClass("no-scroll");
});
</script>
答案 1 :(得分:2)
数组文字([...]
)不定义范围。你似乎想要一个哈希:
class MyClass
MY_ENUM = {:MY_VALUE_1 => "value1", :MY_VALUE_2 => "value2"}
end
MyClass::MY_ENUM[:MY_VALUE_1] #> value1
答案 2 :(得分:1)
如果您想阻止课堂外的可见性(隐藏),您可以使用'private_constant'
private_constant :MY_VALUE_1