首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Rubocop“代码不可达”cop

理解Rubocop“代码不可达”cop
EN

Stack Overflow用户
提问于 2014-06-24 04:41:17
回答 1查看 1.6K关注 0票数 1

我有以下声明

if !defined?(proxy) || proxy.blank?

我试图实现的是避免在零对象上使用未定义的方法。因此,我的意图是

  1. 检查“代理”对象是否定义为
  2. 检查“代理”对象是否为空(但以其他方式定义)

Rubocop说“检测到了无法到达的代码”,但是,当我读到它时,可以定义对象“代理”,但它是空的,这意味着if语句的第二部分将被计算。

如何才能到达代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 05:13:28

基于discussion in chat的编辑

defined?不是正确的方法,它将检查变量是否没有定义,而不是它的值是什么。可以说,它是在一个元层次上运作的。将defined?关键字想象为回答以下问题:“以前在代码中的任何地方都声明过这个东西吗?”

通常,您将使用nil方法检查一个Object#nil?值。这就是问“这个变量是空的吗?”的问题。在任何情况下,您的代码都可能声明proxy变量,这就是if-语句中的代码无法访问的原因:proxy永远不会被定义。

这样你就可以写

代码语言:javascript
复制
if proxy.nil? || proxy.blank?
  # ...
end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24378460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档