比方說,我想這樣做的僞代碼:我可以使用Ruby在同一時間做一個條件&賦值嗎?
if plan = some_api.get_plan
return plan
else
return 'free'
end
我怎樣才能最優雅爲此在Rails的?我想盡量減少撥打some_api.get_plan
。
比方說,我想這樣做的僞代碼:我可以使用Ruby在同一時間做一個條件&賦值嗎?
if plan = some_api.get_plan
return plan
else
return 'free'
end
我怎樣才能最優雅爲此在Rails的?我想盡量減少撥打some_api.get_plan
。
在這種情況下,最簡單的代碼是:
return some_api.get_plan || 'free'
但由於任務返回分配的值,你可以做任務,並在同一時間,有條件的(事實上,我做這一切的時候讓我的代碼更簡潔)。
您可以使用OR運算符來做到這一點:
return (plan = some_api.get_plan) || 'free'
它將返回左手錶達(在這種情況下的分配)的值,如果它不是nil
或false
,否則它將返回的值正確的表達。
請注意,如果不是一個局部變量而是一個plan=
setter方法(如attr_writer :plan
或def plan= val
),其轉讓時,才需要。如果不是這種情況return some_api.get_plan || 'free'
就足夠了。
這個構造是否有名字? – cjm2671
@ cjm2671,是的,這是布爾運算符。我更新了我的答案。 –
你可能應該'返回那個...... –
好點,謝謝。 –