2014-01-17 21 views
0

下面的示例是否有更簡潔的語法?顯然這個例子沒有太多的問題,但作爲對象的一部分,方法調用和數組,我理想的是隻需要一個超級局部變量,這個對象,即'this'之類的東西。If對象存在對象的清除語法

obj? obj : ''

如果對象存在,放對象。否則什麼都不要。

回答

1

通常紅寶石十歲上下的方式做到這一點是有短路或:

obj || '' 

請記住,這不能正常工作,如果obj也就順理成章false;在這種情況下,最好明確地測試obj.nil?

如果您有需要發送任何的結果可能是nil的方法大的連鎖店,有一個看看andand gem

obj.andand.somemethod.andand.anothermethod || '' 

最後,如果你使用Rails,給人的ActiveSupport你的try method

obj.try(:somemethod).try(:anothermethod) || '' 
+0

太棒了。即使你正在檢查一個子對象,是否有簡單的方法返回'nil'?即,我有一個散列,我想寫'obj ['attr'] || ''',但是如果我的'obj'是零,那麼它崩潰而不是返回'或'語句。 –

+1

這就是andand gem所做的 - 它會讓你編寫'obj.andand ['attr'] ||例如'''。 –

+0

很酷。我會檢查出來的! –