我是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}
发布于 2012-02-09 21:39:22
处理此问题的一种方法是:
def foo(*args)
first_name, last_name, age, sex, is_plumber = *args
# some code
# error happens here
logger.error "Method has failed, here are all method arguments #{args.inspect}"
end
发布于 2012-02-09 21:47:23
这是一个有趣的问题。也许使用local_variables?但除了使用eval之外,肯定还有其他方法。我正在查找内核doc
class Test
def method(first, last)
local_variables.each do |var|
puts eval var.to_s
end
end
end
Test.new().method("aaa", 1) # outputs "aaa", 1
发布于 2017-07-31 12:15:45
这可能会有帮助..。
def foo(x, y)
args(binding)
end
def args(callers_binding)
callers_name = caller[0][/`.*'/][1..-2]
parameters = method(callers_name).parameters
parameters.map { |_, arg_name|
callers_binding.local_variable_get(arg_name)
}
end
https://stackoverflow.com/questions/9211813
复制相似问题