[英]What's a more idiomatic Ruby way of writing this?
if params[:parent_type] == "Order"
parent_id = nil
else
parent_id = params[:parent_id]
end
一個Ruby人會嘲笑我這樣寫嗎? 它看起來並不像我見過的一些Ruby代碼那樣簡潔。
這看起來非常合理。 您可以在if前面移動賦值( parent_id = if params...
)或使用三元組,但我不認為結果看起來會更好。
如果parent_id在該行之前為nil或未定義,則可以簡單地寫:
parent_id = params[:parent_id] unless params[:parent_type] == "Order"
它沒有什么問題,但可以更簡潔:
parent_id = (params[:parent_type] == "Order") ? nil : params[:parent_id]
或者:
parent_id = if (params[:parent_type] == "Order")
nil
else
params[:parent_id]
end
我認為它的方式很好。 我是一個紅寶石的人,我不會因為這樣的方式而嘲笑你。 很清楚代碼的作用是什么,並且沒有真正的代碼重復,所以我不擔心它。
我喜歡:
parent_id = (params[:parent_type] == "Order" ? nil : params[:parent_id])
還有一個變化:
parent_id = (params[:parent_type] == "Order") && params[:parent_id]
我們可以使用Ruby三元運算符。 喜歡它的東西:
parent_id = params[:parent_type] == "Order" ? nil : params[:parent_id]
如果parent_id
設置為nil
值,我們可以編寫一個除非語法:
parent_id = params[:parent_id] unless params[:parent_type] == "Order"
或者以一種不同的方式編寫一個簡單的Ruby if-else:
parent_id = if (params[:parent_type] == "Order")
nil
else
params[:parent_id]
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.