Project1

标题: 请问:解释器里面的子解释器问题 [打印本页]

作者: kvkv97    时间: 2023-11-13 21:32
标题: 请问:解释器里面的子解释器问题
在interpreter类里面的方法update

     # 子注释器存在的情况下
      if @child_interpreter != nil
        # 刷新子注释器
        @child_interpreter.update
        # 子注释器执行结束的情况下
        unless @child_interpreter.running?
          # 删除字注释器
          @child_interpreter = nil
        end
        # 如果子注释器还存在
        if @child_interpreter != nil
          return
        end
      end

在调用公共事件中,解释器的子解释器调用update(@child_interpreter.update),怎么不出现栈过深的情况?
作者: 百里_飞柳    时间: 2023-11-14 00:05
因为子解释器里没有再绑定子解释器了,所以@child_interpreter.update里面不会执行这一段……
作者: kvkv97    时间: 2023-11-15 21:10
用公共事件的时候,公共事件设置为文章显示,P    @list,就会出现[#<公共事件>]和[#<文章显示事件>],你的意思是说:解释器首先运行了公共事件,再在方法里面设置子解释器以执行<文章显示事件>,这个就是指解释器不绑定子解释器吗?
作者: srwjrevenger    时间: 2023-11-26 14:22
a默认子解释器是nil
每当a调用公共事件
a的@child_interpreter就变成对应的b
此时b的@child_interpreter默认是nil

在a刷新的时候b也在刷新和执行,直到b执行结束,a的刷新才会进入下一个指令

不管套多少层都是这样的,你如果看不懂就没辙了... ...





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