2

Ruby on Rails 3.2.9 と Ruby 1.9.3 を使用しています。メソッドを実行するメソッドを実装しようとしていますが、基になるメソッドに渡されたすべての引数をsend「送信済み」メソッドに渡したいと考えています。つまり、

def method1(arg1, arg2 = true, *args)
  # ...
  self.class.send(:method2, # passing all arguments passed to method1, whatever those are)
end

次に、 (この場合は) に渡されたすべての引数をに渡したいと思います。method1arg1, arg2 = true, *argsmethod2

どうやってそれを作れいいですか?たとえば、Ruby の「splat」機能を で使用することは可能sendですか?

4

1 に答える 1

4

method1(arg1 = true, arg2, *args)splatオプションの引数も使用している場合は、デフォルト値の引数が必須の引数の後に続く必要があるため、現在のメソッドシグネチャは無効です。ただし、これを次のように変更した場合:

method1(arg1, arg2 = true, *args)

その後、あなたはすることができます

self.class.send(:method2, arg1, arg2, *args)
于 2013-01-10T08:22:51.623 に答える