- 締切済み
rubyでメソッド内で引数名、値を取得
Rubyでメソッドの引数名をメソッド内部で取得するような事は可能でしょうか? def hoge(a,b,c) # ここでa,b,cの引数名、またその値を取得 # 例えば、{:a=>1, :b=>2, :c=>3}のようにHashの形式で得るなど。 end local_variablesだと、引数も含まれますがその他で定義したものも拾ってしまうため、他の方法を探しています。 わかる方がいれば教えていただけますでしょうか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mudai_yeh
- ベストアンサー率0% (0/0)
def hoge(option = {}) option.each_paier do |k,v| p k p v #なんかの処理 end end hoge(:hoge => "hoge", :piyo => "piyo") こんなのどうですか?
- notnot
- ベストアンサー率47% (4900/10359)
No1です。 >(引数に対してループをして、引数の情報の取得、処理を行う) ということであれば、def hoge(*args) と配列で受ければ良いのでは?
補足
ご回答ありがとうございます。 提示いただいた方法で、結果的には意図するものは得られるのですが、今回、質問の内容を何らかの方法で解決するという意図より、 > def hoge(a,b,c) このように宣言されたメソッドに対して引数の情報(引数名、値など)をメソッド内で取得する方法が無いかを単純に興味も含め探しています。
- notnot
- ベストアンサー率47% (4900/10359)
質問の意図がよくわかりませんが、自分で def hoge(a,b,c) と書いているのだから、引数は a b c だとわかりますよね?
補足
はい、目視すればわかります。 ただ、今回の狙いとしてメソッド内で引数全てに対してのループ処理を行たかったのです。 (引数に対してループをして、引数の情報の取得、処理を行う) そもそもループさせるほどの引数の多さなども問題ではあるのですが、興味も含めて今回の質問のような処理が可能なのかどうかを知りたいと思っていました。
補足
ご回答ありがとうございます。 提示いただいた方法で、結果的には意図するものは得られるのですが、今回、質問の内容を何らかの方法で解決するという意図より、 > def hoge(a,b,c) このように宣言されたメソッドに対して引数の情報(引数名、値など)をメソッド内で取得する方法が無いかを単純に興味も含め探しています。