3

次のモジュールが与えられた場合、

module Foo
  def bar
    :baz
  end
end

def send_to_foo(method)
  # ...?
end

send_to_foo(:bar) # => :baz

send_to_foo最後の行を期待どおりに機能させるには、どのコードを入力する必要がありますか?(send_to_fooこれは明らかに私がこれを実装する方法ではありません。それは私が探しているものをより明確にするだけです。)

最初はうまくいくと思っFoo.send(:bar)ていましたが、うまくいかないのは当然です。メソッドがとして定義されている場合はそうなりますが、それはdef self.bar面白くありません。

4

1 に答える 1

2

まあ、簡単な方法は

Foo.extend Foo # let Foo use the methods it contains as instance methods
def send_to_foo(method)
  Foo.send(method)
end

だから今

irb> send_to_foo(:bar)
 #=> :baz
于 2010-04-18T01:53:30.923 に答える