簡體   English   中英

什么是更慣用的Ruby寫作方式?

[英]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

對於更多慣用Ruby方式的代碼,我發現了一篇很棒的文章

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM