3

假设我有:

class A
  include B
  include C
end

module B
  def test_method
    puts "Executed second"
  end
end

module C
  def super_calling 
    proc { super }  
  end

  def test_method
    "Executed first"
    super_calling.call
  end
end

我希望proc { super }在 function 的上下文中执行该块C::test_method,这样B::test_method就会被调用,但是我得到一个错误,上面写着:“super_calling has not superclass”或类似的东西(不记得确切)。

C::test_method如果这样定义,一切正常(难怪) :

def test_method
  "Executed first"
   super
end

我的问题是 - 我对 Ruby 的要求太多了,还是有什么我不明白的地方?有人可以解释一下吗?

4

1 回答 1

1

删除整个super_callingsuperC::test_method.

它会B::test_method在那个时候调用。

于 2014-07-25T15:24:40.620 回答