Ruby on Railsの新機能です。これを行うためのよりエレガントで簡潔な方法がありますか?簡潔な方法でデフォルト値を設定しますか?
foo = params[:foo].nil? ? 'default' : params[:foo]
パラメータがない場合は、単にデフォルト値を割り当てる必要があります。私のやり方はちょっと大変なようです。
Ruby on Railsの新機能です。これを行うためのよりエレガントで簡潔な方法がありますか?簡潔な方法でデフォルト値を設定しますか?
foo = params[:foo].nil? ? 'default' : params[:foo]
パラメータがない場合は、単にデフォルト値を割り当てる必要があります。私のやり方はちょっと大変なようです。
1つのキーにデフォルト値を設定する場合は、Hash#fetch
が答えです。
ブロックを渡すと、キーがparamsにない場合はブロックの値が返されます。
params = {}
params.fetch(:foo) { 'default' }
=> "default"
デフォルトは計算しやすい場合は、あなただけの、同様の方法で2番目の引数としてこれを行うことができます。
params = {}
params.fetch(:foo, 'default')
=> "default"
あなたは全体のハッシュのデフォルトを設定したい場合は、 #default=
と#default_proc
を調べる必要があります。あなたの質問はparams
に関係しているので、適切なデフォルトでハッシュを初期化できないと思います。
ところで、値がnil
に設定されている場合、あなたの方法はnil
を返しませんが、フェッチは正しくnil
を返します。
params[:foo] = nil
params.fetch(:foo) { 'default' }
=> nil
の短い同等:
foo = params[:foo].nil? ? 'default' : params[:foo]
は、私が好きな
foo = params[:foo] || 'default'
です:
foo = params[:foo] || 'default'
これは答えになるはずです。 OR演算子を使用してデフォルト値を設定できることを誰もが知っているはずです。 – nbkhope
別のオプションこのコードをチェックし、presence
方法を使用することです:
foo = params[:foo].presence || 'default'
presence
チェック値が存在する場合(すなわち、がnil
/空でない場合)、そうである場合はその値を返し、そうでない場合はnil
を返します。 1そのletfがnil
ある場合||
はその右に値を返します。params[:foo]
が空の場合、このオプションはまた、'default'
にfoo
に設定されますのでご注意ください。
これは、私が探しているものです。 –