首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby除非&&语句

Ruby除非&&语句
EN

Stack Overflow用户
提问于 2011-10-05 21:58:02
回答 2查看 14.5K关注 0票数 25

我的application_controller.rb中有以下内容

代码语言:javascript
复制
def layout
  unless request.subdomain.empty? && current_user.nil?
    self.class.layout 'admin'
  end
end

上面的代码似乎不能工作。但当我执行以下操作时,它确实起作用了。

代码语言:javascript
复制
def layout
  unless request.subdomain.empty?
    unless current_user.nil?
      self.class.layout 'admin'
    end
  end
end

为了简化代码,我去掉了一条除非语句。我怎么能这么做呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-05 22:01:29

unless something等同于if !something。在您的情况下,这将是

代码语言:javascript
复制
if !(request.subdomain.empty? && current_user.nil?)

但是,您希望

代码语言:javascript
复制
if (!request.subdomain.empty? && !current_user.nil?)

使用布尔代数(De Morgan规则),您可以将其重写为

代码语言:javascript
复制
if !(request.subdomain.empty? || current_user.nil?)

使用unless

代码语言:javascript
复制
unless request.subdomain.empty? || current_user.nil?
票数 72
EN

Stack Overflow用户

发布于 2011-10-05 22:09:39

使用:

代码语言:javascript
复制
if (!request.subdomain.empty? && !current_user.nil?)

我从不将unless与任何更复杂的东西(包含或/和)一起使用,对于这样的语句很难推理。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7662471

复制
相关文章

相似问题

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