【问题标题】:Nil error in Ruby, what is happening here?Ruby 中的 Nil 错误,这里发生了什么?
【发布时间】:2015-04-16 13:02:03
【问题描述】:

有人可以向我解释一下这里发生了什么以及为什么第一个块中断而第二个块有效吗?在这两个示例中,@final_val 都等于 nil

下面不起作用。错误是NoMethodError: undefined method>' for nil:NilClass`

if @final_val > value
  Do stuff
end

以下有效,但@final_val && @final_val 也等于nil

if @final_val && @final_val > value
  Do stuff
end

【问题讨论】:

标签: ruby


【解决方案1】:

NoMethodError: undefined method `>' for nil:NilClass"

我认为这是对您问题的全面回答。

第二个条件由两个词组成:@final_val@final_val > value。检查第一学期后第二学期未检查。它被称为Short-circuit evaluation

【讨论】:

    【解决方案2】:

    短路。

    在表达式中

    @final_val && @final_val > value
    

    由于&& 运算符短路,@final_val > value 仅在@final_val 不是nilfalse 时才被评估。

    【讨论】:

    • 太好了,我自己都糊涂了,其实很简单!感谢您清除它。
    【解决方案3】:

    > 的优先级高于&&,因此@final_val && @final_val > value 等价于@final_val && (@final_val > value)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-03
      • 2021-12-12
      • 2021-08-04
      • 1970-01-01
      • 2017-01-11
      相关资源
      最近更新 更多