Ruby 在方法中分配哈希值
说我有这个方法Ruby 在方法中分配哈希值,ruby,parameters,Ruby,Parameters,说我有这个方法 def foo(bar1, bar2) ## code end 如何实现代码,以便在调用foo('hello','world')时,foo方法访问散列,给出: { :bar1 => 'hello', :bar2 => 'world' } 是否有Ruby(Rails?)内置方法,或者如何编写它 def foo(bar1, bar2) {bar1: bar1, bar2: bar2} end 如果塞尔吉奥提到的是问题的意图,那么 def foo(b
def foo(bar1, bar2)
## code
end
如何实现代码,以便在调用foo('hello','world')
时,foo
方法访问散列,给出:
{
:bar1 => 'hello',
:bar2 => 'world'
}
是否有Ruby(Rails?)内置方法,或者如何编写它
def foo(bar1, bar2)
{bar1: bar1, bar2: bar2}
end
如果塞尔吉奥提到的是问题的意图,那么
def foo(bar1, bar2)
Hash[method(__method__).parameters.map{|_, k| [k, eval(k.to_s)]}]
end
不要那样做。它丑陋邪恶。告诉我全部情况,你做错了什么。你为什么需要它?为什么不首先传递一个散列呢?我认为OP希望自动发现参数名称并将它们与值配对。不是这个,我明白了。那么问题就不清楚了。如果是这样的话,那么问题就接近了。谢谢,我会接受你的建议。当我能清楚地重新表述我的问题时,我会回来的。
def foo(bar1, bar2)
names = method(__method__).parameters.map{|e| e[1]}
Hash[names.zip(names.map {|name| eval(name)})]
end