1

我正在尝试使用同一字符串中给出的参数动态调用字符串中给出的方法,但我一直坚持提供参数...

我目前有:

query = Query.new

while true
  input = gets.split(%r{[/[[:blank:]]/,]})
  puts (query.instance_exec(*input.drop(1)) { |x|
    instance_eval input.at(0)
  })
end

所以方法名称是 input(0) 并且这个方法的参数在输入的其余部分。有没有办法用这些参数调用这个方法?

4

1 回答 1

1

您正在寻找的方法是send. 它的第一个参数将是方法,其余的将传递给该方法。

query = Query.new
puts query.send(*gets.split(/\s+/)) while true
  • 您可以使用while修饰符。
  • 您的正则表达式看起来很复杂。我让它看起来很简单。
  • 不要忘记使用*分解数组的 splat 运算符。
于 2011-12-04T17:36:22.653 回答