ruby - 为什么我可以在 Ruby 中访问数组中的常量?

标签 ruby

假设我有:

class MyClass
  MY_ENUM = [MY_VALUE_1 = 'value1', MY_VALUE_2 = 'value2']
end

这样的事情是可能的:

p MyClass::MY_VALUE_1 #=> "value1"

为什么? MY_VALUE1MY_VALUE_2 不是 [] 中的常量作用域吗?

最佳答案

您可以访问嵌套常量 MY_VALUE_1,因为它与外部常量 MY_ENUM 在同一范围内:两个常量都在类 MyClass< 的范围内.

您希望 [...] 构造定义一个新范围,但它没有。在 Ruby 中,只有三件事定义了一个新的范围:

  • 使用 class SomeName 定义类
  • 使用 module SomeName 定义模块
  • 使用 def some_name 定义函数

关于ruby - 为什么我可以在 Ruby 中访问数组中的常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40829911/

相关文章:

ruby - 追溯 Ruby Gmail Gem 方法的源头

ruby - 在 Slate/Middleman 中使用 Nokogiri 生成静态头列表

ruby-on-rails - 生成的 CSV 中的引号

ruby-on-rails - 我应该逃避我的 rails find 的条件吗?

Ruby,数音节

ruby-on-rails - paypal gem 多账户 ruby​​ on rails

ruby - 优雅的 ruby 单衬垫

ruby - Travis CI 上的 CodeClimate 覆盖率分析是错误的

ruby - 为什么没有正确读取参数?

ruby - Ruby 中的子字符串语法