1

说我有这个方法

def foo(bar1, bar2)
  ## code
end

我怎样才能实现代码,以便当我调用 时foo('hello', 'world'),该foo方法访问一个哈希,给出:

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

是否有内置方法的 Ruby(Rails?),或者我该如何编写它?

4

2 回答 2

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
于 2013-09-18T17:16:05.387 回答
1
def foo(bar1, bar2)
  names = method(__method__).parameters.map{|e| e[1]}
  Hash[names.zip(names.map {|name| eval(name)})]
end

不要那样做。这是丑陋和邪恶的。给我整个上下文,你做错了什么。

于 2013-09-18T17:28:12.487 回答