很多變量需要一些處理,所以我正在檢查它們中的任何一個是否爲nil
。有沒有更有效的方式來編寫以下內容?檢查多個變量爲零
unless a.nil? || b.nil? || c.nil? || d.nil? || e.nil? || f.nil? || g.nil?
render 'view'
end
或者我應該避免在一行上檢查很多變量nil
?
很多變量需要一些處理,所以我正在檢查它們中的任何一個是否爲nil
。有沒有更有效的方式來編寫以下內容?檢查多個變量爲零
unless a.nil? || b.nil? || c.nil? || d.nil? || e.nil? || f.nil? || g.nil?
render 'view'
end
或者我應該避免在一行上檢查很多變量nil
?
通過使用none?
你可以有if
而不是unless
:
if [a,b,c,d,e,f,g].none?(&:nil?)
細想起來,這可以簡單地降低:
,如果你不介意的治療false
與nil
Is there一種更有效的方式來編寫以下內容?
我想一個更好的問題是,「有寫的更表現方式......」
unless [a,b,c,d,e,f,g].include?(nil)
render 'view'
end
也有一些其他的方法:
arr = [a,b,c,d,e,f,g]
render 'view' if arr.compact == arr
如果您a,b,c...
是對象(或東西是永遠不會false
),你可以把它寫像這個:
if a && b && c && d && e && f
render 'view'
end
是'FALSE'有效還是一樣'nil'?因爲如果'false'與'nil'相同,我會放棄'.nil?'方法調用(無論如何會降低性能)。即使其他代碼的讀取效果更好,我也懷疑@Meier的回答會有什麼更好的表現(除了**,也許**將「if」刪除),所以我們得到了&a && b && c && d && e && f && render('view')') – Myst
@Myst,對不起,我忘了提及一些變量是不能爲空的數組,所以從@zetetic的答案中得出結論,'if [a,b,c, d,e,f,g] .none {| x | x.nil? || x.empty? }「是一個很好的解決方案? – massaskillz
在Rails中,您還可以使用'blank?'方法,該方法可以在NilClass,String和Array的實例上調用。所以'.none(&:blank?)'可能就是你要找的東西。 – zetetic