Ruby 2.3.3:探索方法查找

时间:2017-01-11 23:27:54

标签: ruby lookup method-missing

我遇到了一个挑战:探索方法查找在Ruby中的工作原理。这是实验性代码:

class Object
  def method_missing(*args)
    @count = @count.to_i + 1
    puts "Object: #{ @count }"
    super
  end
end

module Module1
  def method_missing(*args)
    puts 'Module1'
    super
  end
end

module Module2
  def method_missing(*args)
    puts 'Module2'
    super
  end
end

module Module3
  def method_missing(*args)
    puts 'Module3'
    super
  end
end

class Class1
  include Module1

  def method_missing(*args)
    puts 'Class1'
    super
  end
end

class Class2 < Class1
  include Module3
  include Module2

  def method_missing(*args)
    puts 'Class2'
    super
  end
end

test_obj = Class2.new
test_obj.testrun # non existing method

在Ruby 2.3.0中,它似乎正常工作。但是在Ruby 2.3.3中它有奇数输出和循环。即使我评论最后两行(#test_obj = Class2.new和#test_obj.testrun),它也会在输出中循环,但必须没有。请帮助找出问题的原因。

0 个答案:

没有答案