在Ruby中,如何创建私有类常量?

class Person
  SECRET='xxx' # How to make class private??

  def show_secret
    puts "Secret: #{SECRET}"
  end
end

Person.new.show_secret
puts Person::SECRET # I'd like this to fail

推荐答案

您还可以将常量更改为类方法:

def self.secret
  'xxx'
end

private_class_method :secret

这使得它可以在类的所有实例中访问,但不能在外部访问.

Ruby相关问答推荐

如何使用另一个Ruby 中的Ruby 中的区域设置?

这是一个很好的测试?规范

Ruby 3 从多个预定纤程中收集结果

判断一个数组是否是Ruby中另一个数组的子集

获取字符串中的最后一个字符

Ruby 将字符串转换为方法名

Ruby:如何卸载设计(uninstall Devise)?

将参数传递给erb视图

无法从同一网络上的另一台计算机访问本地 Sinatra 服务器

删除 Ruby 数组中的 nil 和空白字符串

如何在 Ruby 中找到除法的余数?

Ruby 模板:如何将变量传递到内联 ERB?

在 Ruby 中获取本月的最后一天

如何使用密码保护我的 /sidekiq 路由(即需要对 Sidekiq::Web 工具进行身份验证)?

项目目录的相对路径

安装 Jekyll 时出错 - 本机扩展构建

Ruby:define_method 与 def

如何判断变量是数字还是字符串?

为什么在安装 gem 时出现权限被拒绝错误?

Ruby 中的Monkey Patching到底是什么意思?