ruby - 从模块访问私有(private)常量

标签 ruby

有什么方法可以从包含的模块访问私有(private)常量吗?

这是我想做的:

module B
  def access_private_here
    puts MY_CONST
  end
end

class A
  include B
  private
    MY_CONST = 1
end

我知道如果这个常量是公开的,我可以做 self.class::MY_CONST,有什么方法可以用私有(private) cons 实现同样的效果吗?

最佳答案

我建议这样写,这样当你重命名 B 时,除了 include B 之外你不需要改变任何东西:

module B
  def access_private_here
    puts self.class::MY_CONST
  end
end

class A
  include B
  private
    MY_CONST = "cat"
end

A.new.access_private_here #=> "cat"

关于ruby - 从模块访问私有(private)常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27026085/

相关文章:

ruby-on-rails - 为 Spree 安装设置主题;造成污损噩梦

ruby - 无法用指南针观看 : text file busy on shared folder

mysql - 更新连接表上的列

ruby - 编译或混淆的 Ruby

ruby-on-rails - Rails - 为什么我不能在测试中使用我在模块中创建的方法?

ruby-on-rails - 如何在 Ruby on Rails 中仅使用 OmniAuth 进行不同 Apis 的授权而无需身份验证

c - Rake 构建 C 应用程序

ruby-on-rails - 如何获取列表中具有相同类别的所有项目

ruby-on-rails - Rspec,Rails,我是否需要为每个测试获取或发布请求

arrays - 为 `values_at` 方法的选择器使用索引数组