【问题标题】:Check if hash is nil before checking specific attribute在检查特定属性之前检查哈希是否为零
【发布时间】:2015-09-14 09:38:21
【问题描述】:

我现在正在做的是

"Hello" if options && options[:greet]

我想做的是剪掉那条线。如果options 为零,options[:greet] 显然也是。 Ruby/Rails 是否提供了一种提供这种“哈希检查”能力的方法?或者也许有一种更简洁的写法?

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

还有一个快捷方式,当我无法控制 options 变量(即它可能是 nil 或哈希)时,我倾向于更频繁地使用它:

options.to_h[:greet] # just convert it to a hash before key access

请注意,它仅适用于starting from Ruby 2.0

【讨论】:

    【解决方案2】:

    我认为那条线非常好。

    确保始终设置options 可能是有意义的。如果 options 作为参数传递给方法,您可能需要设置默认值:

    def method_name(options = {})
    

    或者您可能希望在开始使用 nil 之前使用空哈希初始化 options

    options ||= {}
    

    Rails 还提供了 try 方法,当您在 nil 上调用方法时该方法不会失败:

    options.try([], :greet)
    

    【讨论】:

    • 谢谢,我使用options=nil 进行初始化,并没有真正考虑将其设置为空哈希的可能性。 try 的用法也很有趣 :)
    猜你喜欢
    • 2013-07-06
    • 2012-02-19
    • 2011-05-30
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    相关资源
    最近更新 更多