[英]Ruby unless && statement
我在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?)
使用布爾代數(De Morgan規則),您可以將其重寫為
if !(request.subdomain.empty? || current_user.nil?)
使用unless
unless request.subdomain.empty? || current_user.nil?
如果要將子域設置為'admin'
如果子域不為空且當前用戶不為 nil:
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
在最瑣碎的情況下, unless
最佳做法是避免。
采用:
if (!request.subdomain.empty? && !current_user.nil?)
unless
有更復雜的東西(包含或/和), unless
我永遠不會使用它,因此很難推斷出這樣的陳述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.