一千萬個為什麽

搜索

將實例方法發送到模塊

鑒於以下模塊,

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 ,那將是沒有意義的。

最佳答案

好吧,簡單的方法就是

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

轉載註明原文: 將實例方法發送到模塊