Project1
标题:
请问:为什么能用而不导致死循环
[打印本页]
作者:
kvkv97
时间:
2021-3-8 15:26
标题:
请问:为什么能用而不导致死循环
#--------------------------------------------------------------------------
# ● 公共事件
#--------------------------------------------------------------------------
def command_117
# 获取公共事件
common_event = $data_common_events[@parameters[0]]
# 公共事件有效的情况下
if common_event != nil
# 生成子解释器
@child_interpreter = Interpreter.new(@depth + 1)
@child_interpreter.setup(common_event.list, @event_id)
end
# 继续
return true
end
在上面 ,@child_interpreter = Interpreter.new(@depth + 1)
为什么在本类的方法update中,@child_interpreter.update
这样不是形成死循环吗?为什么还能用?怎么不报错“stack level too deep”?
作者:
soulsaga
时间:
2021-3-8 15:53
本帖最后由 soulsaga 于 2021-3-8 16:08 编辑
update不会造成死循环?
作者:
enghao_lim
时间:
2021-3-8 16:43
首先,并没有构成死循环,这是递进。其次,脚本有检查最多100级。
# 深度超过 100 级
if depth > 100
print("调用公用事件超过了限制。")
exit
end
复制代码
这里给个真死循环案例:公共事件1里头执行公共事件2,公共事件2里头执行公共事件1,这样就会陷入死循环然后因为超过100级而弹出警告并退出。
作者:
RPGzh500223
时间:
2021-3-9 10:51
网上随便看的,没学过,用词什么的多包涵
def update 这是个实例的方法
通常事件解释器
地图:$game_system.map_interpreter
战斗:$game_system.battle_interpreter
都是Interpreter的实例
而@child_interpreter = Interpreter.new(@depth + 1)是又生成个实例
实例之间又互不干扰
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1