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 に答える