|
本帖最后由 hasea 于 2014-1-20 08:38 PM 编辑
内容为上次(http://pkuxkx.net/forum/thread-36660-1-1.html)发出的模块更新版本。
这几天在写脚本,感到一些不方便的地方。昨晚在论坛讨论多行触发时,发现当多行触发和单行触发同时存在,会存在一些问题,虽然可以解决,但看起来很丑且复杂。比如下面这个:
在匹配单行的时候,一定要等下一行出现数据才会返回。这个是很让人难受的。当然你可以用好几行代码来避免这个问题!
我决定重新构建一种更简便的方法。
对于脚本来说,简洁优雅是我们一向的追求。
1、增加一个等待多个触发器返回的函数。用法如下:
以上函数将创建一个单行触发器,一个2行的多行触发器,一个定时器,一个协程对象。
这个与上例的比较好像差别不太,看起来还更多代码。但注意上面那个是有bug的,除非你能忍受。
这个函数的作用是不会再尝试对一行的正则匹配取两行数据。
注意上个版本在wait.regexp中使用table,只是为了看代码更加清晰。会把几个正则字符串合并为(字符串1|字符串2|字符串3)这种样式。这有很多限制。
2、把协程包装为一种更加简单的暂停机制使用。以便在需要的时候能够中断函数中的流程。用法如下:
这在mud遇到图片或是什么特殊情况,想来还是很好用的!!
注意在子线程中不能使用此函数来暂停,这样将会产生严重的错误。由于子线程一般没有需要暂停的情况,这好像是不实用的。所以没有为子线程增加暂停和唤醒函数了。
3、下面对模块中的所有函数做一下说明。
wait.time (seconds) | 旧模块函数 | wait.regexp (regexp, timeout, flags, multi, multi_lines) | 旧模块函数,修改支持多行 | wait.match (match, timeout, flags) | 旧模块函数 | wait.make (f) | 旧模块函数 | wait.mulregexp (regexps, timeout, flags) | 新增加函数。允许多行多触发器 | wait.pause (sign) | 新增加函数。暂停函数进程 | wait.wake (sign,text) | 新增加函数。恢复暂停的函数进程 | 以下为模拟子线程的触发函数 | | wait.subwait:new () | 新增加函数。新建子线程 | wait.subwait:close () | 新增加函数。关闭子线程 | wait.subwait:time (seconds) | 新增加函数。子线程中定时等待 | wait.subwait:regexp (regexp, timeout, flags, multi, multi_lines) | 新增加函数。子线程中的正则触发 | wait.subwait:mulregexp (regexps, timeout, flags) | 新增加函数。子线程中的多触发器等待函数 |
Fix:修正2个bug。 2014.1.20
附件:
北大侠客行MUD,中国最好的MUD |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|