Ruby-get方法参数名称和值

Ruby-get方法参数名称和值,ruby,parameters,Ruby,Parameters,是否有一种动态获取方法参数名称和值的方法,可能是元编程 def my_method(name, age) # some code that solves this issue end my_method('John', 22) # => { name: 'John', age: 22 } 我想在我的所有方法中都使用它,以便记录方法调用和相应的参数,但不需要在每个方法中手动执行 谢谢。是的!在ruby中,它被称为绑定,这是一个封装特定行运行的上下文的对象。完整的文档是,但是在你试图做

是否有一种动态获取方法参数名称和值的方法,可能是元编程

def my_method(name, age)
  # some code that solves this issue
end

my_method('John', 22) # => { name: 'John', age: 22 }
我想在我的所有方法中都使用它,以便记录方法调用和相应的参数,但不需要在每个方法中手动执行


谢谢。

是的!在ruby中,它被称为
绑定
,这是一个封装特定行运行的上下文的对象。完整的文档是,但是在你试图做的情况下

def my_method(arg1, arg2)
  var = arg2
  p binding.local_variables #=> [:arg1, :arg2, :var]
  p binding.local_variable_get(:arg1) #=> 1
  p Hash[binding.local_variables.map{|x| [x, binding.local_variable_get(x)]}] #=> {:arg1 => 1, :arg2 => 2, :var => 2}
end

my_method(1, 2)

如果你能帮忙的话,我强烈建议不要使用
绑定#eval
。几乎总有比使用
eval
更好的方法来解决问题。请注意,
binding
将上下文封装在调用它的行上,因此,如果您希望在这一点上有一个简单的
log\u parameters\u
方法,您需要将绑定传递到该方法中,或者使用更聪明的方法,如Perfect@ymbirtt,非常感谢