Ruby 和 ROR 的新手,每天都喜欢它,所以这是我的问题,因为我不知道如何用 google 搜索它(我已经尝试过:))
我们有方法
def foo(first_name, last_name, age, sex, is_plumber)
# some code
# error happens here
logger.error "Method has failed, here are all method arguments #{SOMETHING}"
end
所以我正在寻找一种方法来将所有参数传递给方法,而不列出每个参数。因为这是 Ruby,我认为有一种方法:)如果它是 java,我只会列出它们:)
输出将是:
Method has failed, here are all method arguments {"Mario", "Super", 40, true, true}
在 Ruby 1.9.2 及更高版本中,您可以使用parameters
方法上的方法以获取该方法的参数列表。这将返回一个对的列表,指示参数的名称以及是否需要它。
e.g.
如果你这样做
def foo(x, y)
end
then
method(:foo).parameters # => [[:req, :x], [:req, :y]]
您可以使用特殊变量__method__
获取当前方法的名称。因此,在方法中,可以通过以下方式获取其参数名称
args = method(__method__).parameters.map { |arg| arg[1].to_s }
然后您可以显示每个参数的名称和值
logger.error "Method failed with " + args.map { |arg| "#{arg} = #{eval arg}" }.join(', ')
Note:因为这个答案最初是在当前版本的 Ruby 中编写的eval
不能再用符号来调用。为了解决这个问题,明确to_s
已在构建参数名称列表时添加,即parameters.map { |arg| arg[1].to_s }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)