4
  if params[:parent_type] == "Order"
    parent_id = nil
  else
    parent_id = params[:parent_id]
  end

Rubyの人は、このように書いたことで私を笑わせるでしょうか?私が見たRubyコードのように、特に簡潔ではないようです。

4

6 に答える 6

10

それは私には完全に合理的に見えます。if()の前に割り当てを移動するparent_id = if params...か、3項を使用することもできますが、結果が良くなるとは思いません。

その行の前にparent_idがnilまたはundefinedの場合は、次のように記述できます。

parent_id = params[:parent_id] unless params[:parent_type] == "Order"
于 2009-09-01T19:13:48.213 に答える
7

現状のままでは何も問題はありませんが、より簡潔にすることができます。

parent_id = (params[:parent_type] == "Order") ? nil : params[:parent_id]

または:

parent_id = if (params[:parent_type] == "Order")
    nil
else
    params[:parent_id]
end
于 2009-09-01T19:10:17.550 に答える
5

そのままでいいと思います。私はRubyの人で、そのように書いたことであなたを笑わせることはありません。コードが何をするのかは明らかで、実際のコードの重複はないので、心配する必要はありません。

于 2009-09-01T19:10:55.317 に答える
2

好き:

parent_id =(params [:parent_type] == "Order"?nil:params [:parent_id])
于 2009-09-01T21:22:13.273 に答える
1

もう1つのバリエーション:

parent_id = (params[:parent_type] == "Order") && params[:parent_id]
于 2009-09-01T23:21:30.773 に答える
0

Rubyの三項演算子を使用できます。それのようなもの:

parent_id = params[:parent_type] == "Order" ? nil : params[:parent_id]

が値でparent_id設定されてnilいる場合、unless構文を記述できます。

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のコーディング方法については、それに関するすばらしい記事を見つけました。

于 2017-04-22T01:14:47.487 に答える