Ruby - 获取方法参数的哈希值及其当前值

时间:2014-03-23 09:52:56

标签: ruby-on-rails ruby

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__)

1 个答案:

答案 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"}

互动版:http://repl.it/QTi

另请注意,如果在方法结束时调用,它可以让您深入了解方法中的所有局部变量,这可能是一个好处,也可能是烦人的,具体取决于您要查找的内容。