我編碼在Ruby的一些地方,從一個方法調用給定的值foo
輸出乾淨的方法,我想:紅寶石 - 如果truthy返回一個值,或執行任意代碼
- 返回
foo
如果foo
is truthy - 如果
foo
是僞造的,則記錄錯誤並返回默認值。
實現這個最簡單幼稚的方法可能是:
foo = procedure(input)
if foo
foo
else
log_error
default
end
但由於foo
重複三次這種感覺過於冗長,而這種風格是非常必要的。
寫這個最乾淨,最習慣的方法是什麼?
(性能matters--我們假設foo
在絕大多數情況下truthy。)
'FOO ||的log_error;默認' - 將評估'foo || log_error;'作爲一個語句,'default'作爲另一個語句 - 這可能不是你的意圖。 –
我沒有意識到你可以將Ruby語句組合在一起(帶圓括號),但它是完全合理的。 POLA再次奪冠!我想知道它與'begin'..''end'塊有什麼不同? – mwp