【问题标题】:Check if a constant is already defined检查是否已经定义了常量
【发布时间】:2012-04-27 15:44:56
【问题描述】:

这是一个简单的,我希望。 在以下示例中,如何检查是否已定义常量?

#this works
var = var||1
puts var
var = var||2
puts var

#this doesn't
CONST = CONST||1
puts CONST
CONST = CONST||2
puts CONST

=> 1
   1
   uninitialized constant CONST (NameError)

【问题讨论】:

    标签: ruby constants


    【解决方案1】:
    CONST = 2 unless defined? CONST
    

    请参阅 here 了解更多关于出色的 defined? 运算符的信息。

    P.S.我猜将来你会想要var ||= 1 而不是var = var||1

    【讨论】:

    【解决方案2】:

    const_defined? API

    pry> User.const_defined?("PER_PAGE")
    => true
    pry> User.const_defined?("PER_PAGE123")
    => false
    

    【讨论】:

    • 这在您检查是否以动态方式定义时特别有用。
    【解决方案3】:
    CONST ||= :default_value
    

    以上方法在 ruby​​ 1.9.3 上对我有用,但在 1.8 上失败了……现在 1.8 已经很古老了。

    【讨论】:

    • :) 1.8 可能很古老,但在 2017 年仍在使用,例如:Dreamhost 共享主机。
    • 我看到大多数项目已经放弃了对 ruby​​ 1.8 的支持。我知道仍然有“支持”的 ruby​​ 1.8 版本,例如由 Red Hat Enterprise Linux 提供。他们正在获得安全补丁,但在安装任何应用程序时使用的旧 gem 版本中存在许多未知的安全漏洞。所以是的,有,但对大多数人来说无关紧要。就像运行 XP 的计算机(最近才再次发现这样的 ATM)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-22
    • 2019-01-07
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    相关资源
    最近更新 更多