我有以下声明
if !defined?(proxy) || proxy.blank?
我试图实现的是避免在零对象上使用未定义的方法。因此,我的意图是
Rubocop说“检测到了无法到达的代码”,但是,当我读到它时,可以定义对象“代理”,但它是空的,这意味着if语句的第二部分将被计算。
如何才能到达代码?
发布于 2014-06-24 05:13:28
基于discussion in chat的编辑
defined?不是正确的方法,它将检查变量是否没有定义,而不是它的值是什么。可以说,它是在一个元层次上运作的。将defined?关键字想象为回答以下问题:“以前在代码中的任何地方都声明过这个东西吗?”
通常,您将使用nil方法检查一个Object#nil?值。这就是问“这个变量是空的吗?”的问题。在任何情况下,您的代码都可能声明proxy变量,这就是if-语句中的代码无法访问的原因:proxy永远不会被定义。
这样你就可以写
if proxy.nil? || proxy.blank?
# ...
endhttps://stackoverflow.com/questions/24378460
复制相似问题