Project1

标题: 用alias扩充方法之后遇到的奇怪错误 [打印本页]

作者: 451483807    时间: 2018-12-12 01:04
标题: 用alias扩充方法之后遇到的奇怪错误
初学RGSS,偶然遇到了一个无限递归的错误。
感觉按照正常逻辑来看是根本不会发生递归的,希望大佬们能够帮我解惑。
简化出来的代码如下:
  1. class A_Test
  2.   def test
  3.     print('A')
  4.   end
  5. end

  6. class B_Test < A_Test
  7.   def test
  8.     print('B')
  9.     super
  10.   end
  11. end

  12. class A_Test
  13.   alias base_test test
  14.   def test
  15.     print('newA')
  16.     base_test
  17.   end
  18. end


  19. class B_Test
  20.   alias base_test test
  21.   def test
  22.     print('newB')
  23.     base_test
  24.   end
  25. end

  26. b = B_Test.new

  27. b.test
复制代码

作者: 晴兰    时间: 2018-12-12 02:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: 451483807    时间: 2018-12-12 21:56
晴兰 发表于 2018-12-12 02:39
简单说 A的test方法里面的base_test那句调用的是对象上的base_test
如果你用b去调用,那么实际上是通过B的t ...

明白了,那么是否有方法去避免调用到B的base_test呢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1