在方法中分配哈希值

时间:2013-09-18 17:05:25

标签: ruby parameters

说我有这个方法

def foo(bar1, bar2)
  ## code
end

我如何实现代码,以便在调用foo('hello', 'world')时,foo方法访问哈希,给出:

{
  :bar1 => 'hello',
  :bar2 => 'world' 
}

是否有Ruby(Rails?)内置方法,或者我怎么写它?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

def foo(bar1, bar2)
  names = method(__method__).parameters.map{|e| e[1]}
  Hash[names.zip(names.map {|name| eval(name)})]
end

不要那样做。这是丑陋和邪恶的。给我整个背景,你做错了。