Ruby call" super"从一个区块(即在上下文中)

时间:2014-07-25 15:20:05

标签: ruby metaprogramming superclass super ancestor

假设我有:

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 }的上下文中执行块C::test_method,这样就可以调用B::test_method,但是我收到的错误是:&#34 ; super_calling没有超类"或类似的东西(不记得确切)。

如果C::test_method定义如下:

,一切正常(难怪)
def test_method
  "Executed first"
   super
end

我的问题是 - 我从Ruby那里问过多,或者有些事情我不明白? 有人可以解释它吗?

1 个答案:

答案 0 :(得分:1)

删除整个super_calling,然后在super中使用C::test_method

此时会调用B::test_method