1

私はこれを持っています:

def foo(a=3, b=6)
  puts a+b
end

しかし、私はそれを次のように呼びます:

foo(params[:a], params[:b])

パラメータが存在する場合は問題ありませんが、存在しない場合は次のように呼び出されます。

foo(nil,nil) 

3 と 6 のデフォルト値が設定されず、nil クラスの undef メソッド '+' のエラーがスローされます。

私の質問は、メソッドに nil が渡された場合でも、メソッドのデフォルトを設定する方法があるかどうかです。したがって、ユーザーが nil と言った場合は、'Screw you man!' と言います。とにかく彼に3を与えます。

これは良い考えではありませんが、私はただ興味があります。

4

1 に答える 1

4

メソッド シグネチャでデフォルトを使用するのではなく、||=複合代入演算子を使用して、ブール値のコンテキストで変数が nil または false に評価される場合にのみ値を割り当てることができます。これは、設定されていない場合と同様です。例えば:

def foo a, b
  a ||= 3
  b ||= 6
  puts a + b
end
于 2013-10-23T14:05:46.567 に答える