0
下面的示例是否有更簡潔的語法?顯然這個例子沒有太多的問題,但作爲對象的一部分,方法調用和數組,我理想的是隻需要一個超級局部變量,這個對象,即'this'之類的東西。If對象存在對象的清除語法
obj? obj : ''
如果對象存在,放對象。否則什麼都不要。
下面的示例是否有更簡潔的語法?顯然這個例子沒有太多的問題,但作爲對象的一部分,方法調用和數組,我理想的是隻需要一個超級局部變量,這個對象,即'this'之類的東西。If對象存在對象的清除語法
obj? obj : ''
如果對象存在,放對象。否則什麼都不要。
通常紅寶石十歲上下的方式做到這一點是有短路或:
obj || ''
請記住,這不能正常工作,如果obj
也就順理成章false
;在這種情況下,最好明確地測試obj.nil?
。
如果您有需要發送任何的結果可能是nil
的方法大的連鎖店,有一個看看andand gem:
obj.andand.somemethod.andand.anothermethod || ''
最後,如果你使用Rails,給人的ActiveSupport你的try
method:
obj.try(:somemethod).try(:anothermethod) || ''
太棒了。即使你正在檢查一個子對象,是否有簡單的方法返回'nil'?即,我有一個散列,我想寫'obj ['attr'] || ''',但是如果我的'obj'是零,那麼它崩潰而不是返回'或'語句。 –
這就是andand gem所做的 - 它會讓你編寫'obj.andand ['attr'] ||例如'''。 –
很酷。我會檢查出來的! –