Ruby中unless和statement的关系?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我在我的application_controller.rb中有以下内容

def layout
  unless request.subdomain.empty? && current_user.nil?
    self.class.layout 'admin'
  end
end

上面的代码似乎不起作用。但是当我做下面的事时,它确实有效。

def layout
  unless request.subdomain.empty?
    unless current_user.nil?
      self.class.layout 'admin'
    end
  end
end

提问于
用户回答回答于

unless something相当于if !something。在你的情况下,这是

if !(request.subdomain.empty? && current_user.nil?)

随你

if (!request.subdomain.empty? && !current_user.nil?)

使用布尔代数可以将其重写为

if !(request.subdomain.empty? || current_user.nil?)

运用 unless

unless request.subdomain.empty? || current_user.nil?
用户回答回答于

如果想布局设置'admin' ,如果子域是不是空的和当前用户不是零:

def layout
  if !request.subdomain.empty? && !current_user.nil?
    self.class.layout 'admin'
  end
end

改变你的逻辑来使用if语句和肯定谓词,它会使代码中的逻辑更容易理解:

def layout
  if request.subdomain.present? && current_user
    self.class.layout "admin"
  end
end

最好的做法是避免unless除了最微不足道的情况外。

扫码关注云+社区