ruby のオプションのパラメーターに関する問題に直面しています。これは私のコードです:
def foo options={:test => true}
puts options[:test]
end
foo # => puts true
foo :lol => 42 # => puts nil
2 番目の呼び出しで nil が返される理由がわかりません。他のパラメーター set :test を nil に設定しているようです。
ありがとう。
ruby のオプションのパラメーターに関する問題に直面しています。これは私のコードです:
def foo options={:test => true}
puts options[:test]
end
foo # => puts true
foo :lol => 42 # => puts nil
2 番目の呼び出しで nil が返される理由がわかりません。他のパラメーター set :test を nil に設定しているようです。
ありがとう。
これは、デフォルトのパラメーターの場合、ハッシュ パラメーターを渡すと完全に上書きされる (つまり、 が設定されるoptions = {:lol => 42}
) ため、options[:test]
キーが存在しなくなるために発生します。
特定のハッシュ キーにデフォルト値を設定するには、次を試してください。
def foo options={}
options = {:test => true}.merge options
puts options[:test]
end
この場合、特定のキーのデフォルト値を持つハッシュ ( {:test => true}
) を別のハッシュ (引数に key=>values を含む) とマージします。キーが両方のハッシュ オブジェクトにある場合、関数に渡されたハッシュの値merge
が優先されます。