はのキーワード引数でfoo
を呼び出すが、まだデフォルトが何であれ呼び出すための方法はあります私は、デフォルトのキーワード引数Rubyでデフォルトのキーワード引数を明示的に呼び出す方法はありますか?
def foo(bar: "baz")
bar
end
と機能を持っているとしましょうか?たとえば、これを動作させる方法は?
foo(bar: :default)
#=> "baz"
また、メソッド内のデフォルトの引数がそのメソッド内のものであるかどうかを確認する方法はありますか?
はい、ただし、デフォルトの値を明示的に呼び出す方法や、引数が渡されたときにデフォルト値が表示されるかどうかを確認する方法がありますか? デフォルトをnilに設定してから、またはステートメントでオーバーライドすることは、可能でない場合には最適な方法かもしれないようです。答えてくれてありがとう! –
これはRubyのコア標準の一部ではありませんが、絶対に知っておく必要がある場合は、実行する方法があります。私は強くその種のハックを使用しないことをお勧めします(http://stackoverflow.com/questions/622324/getting-argument-names-in-ruby-reflection)。多くの場合、 '= nil'や' x:nil'という表記は、あなたのライブラリを使っている人には「オプション」を意味し、デフォルトが適用されることを期待しています。このデフォルトは手動で文書化することができます。また、期待される結果が得られれば、発信者に関係しないので関連性がないかもしれません。 * Do What I Mean *の原則がここに当てはまります。 – tadman
ありがとう、私はそれを念頭に置いておきます。私はRubyでメタプログラミングを行う場合、妥当性の限界をテストしています。私は誰もこのメソッドに触れる必要がないことを望んでいます:) –