繁体   English   中英

带有参数的Ruby instance_exec / instance_eval

[英]Ruby instance_exec / instance_eval with arguments

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

我目前有:

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),此方法的参数位于其余输入中。 有什么方法可以使用这些参数调用此方法?

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

query = Query.new
puts query.send(*gets.split(/\s+/)) while true
  • 您可以使用while修饰符。
  • 您的正则表达式看起来很复杂。 我看起来很简单。
  • 不要忘记使用splat运算符* ,它分解一个数组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM