Ruby中是否有办法获取当前方法的参数列表及其当前值(在方法运行期间)?如:
def foo(a, b, c)
arg_vals = __method__params__
return arg_vals
end
x = foo(10,20,30) #returns {a:10, b:20, c:30}
(背景:我希望这个用于我的日志库,所以我可以从任何一点调用它:)
my_logger(__method__, __method__params__)
答案 0 :(得分:1)
有点黑客,但这很接近:
def test(arg1, arg2)
args = local_variables.inject({}) { |c, i| c[i] = eval(i); c }
puts args.inspect
end
test('hello', 'world')
输出:
{"args"=>nil, "arg1"=>"hello", "arg2"=>"world"}
另请注意,如果在方法结束时调用,它可以让您深入了解方法中的所有局部变量,这可能是一个好处,也可能是烦人的,具体取决于您要查找的内容。