newstart
发表于 2023-7-10 08:06:55
zhuzi 发表于 2023-7-9 05:10 PM
SimpleAlias好啊
Python语言里,函数是第一类对象。在Alias的构造函数中,OnSuccess命名参数所传递的只是self.getfromcorpse函数的引用而并非函数调用。真正的getfromcorpse函数在下面,定义是这样的:
def getfromcorpse(self, name, line, wildcards):
cmd = f"get {wildcards} from corpse"
self.session.writeline(cmd)
可以看到,该函数带有4个参数。除类的自引用self之外,name,line,wildcards分别代表Alias的名称、捕获的整行的内容、正则表达式匹配里的捕获结果(数组形式)。在PyMUD系统执行捕获到Alias输入时,会自动将相关参数传递到onSuccess对应的引用函数中,因此,里面的wildcards就是正则表达式^gp\s(.+)$里的(.+)所匹配的内容。
例如,当输入gp gold命令时,PyMUD会自动进行正则表达式匹配,并将匹配结果gold存入wildcards中,这样在下面的onSuccess时,cmd会格式化为get gold from corpse,并最终通过session.writeline发送到服务器。
simcore
发表于 2023-7-10 10:59:50
“ 当然现在岗位也不是程序员”
是真的吗?至少以前是程序员吧?
很牛。这么挺大的工程业余时间搞定。
zhuzi
发表于 2023-7-10 20:28:12
newstart 发表于 2023-7-10 08:06 AM
Python语言里,函数是第一类对象。在Alias的构造函数中,OnSuccess命名参数所传递的只是self.getfromcorp ...
哈哈,真是深奥,我都不知道函数还有这种引用方法
看了下Alias是个类,我的类的用法还停留在Alias.函数(){:7_274:}
shendu
发表于 2023-7-14 11:29:17
Unhandled exception in event loop:
File "F:\pymud\objects.py", line 119, in async_execute
await self.session.handle_input_async(*code)
File "F:\pymud\session.py", line 677, in handle_input_async
await handler(*args)
Exception object NoneType can't be used in 'await' expression
Press ENTER to continue...
shendu
发表于 2023-7-14 11:29:48
每次输入#var查看数据的时候会出现在这个情况
newstart
发表于 2023-7-14 12:09:48
里面有点bug,异常处理没弄好。
github中,7月9日版本已修复该问题。
请从github clone最新版解决
jarlyyn
发表于 2023-7-14 12:11:43
newstart 发表于 2023-7-14 12:09 PM
里面有点bug,异常处理没弄好。
github中,7月9日版本已修复该问题。
请从github clone最新版解决 ...
建议还是做release,不要直接clone
不然不同的branhch会让使用者比较头疼。
newstart
发表于 2023-7-14 12:41:36
jarlyyn 发表于 2023-7-14 12:11 PM
建议还是做release,不要直接clone
不然不同的branhch会让使用者比较头疼。
有道理,从现在开始发布release
shendu
发表于 2023-7-15 13:21:19
newstart 发表于 2023-7-14 12:09 PM
里面有点bug,异常处理没弄好。
github中,7月9日版本已修复该问题。
请从github clone最新版解决 ...
好的,谢谢啦,我去下一个试一下{:7_279:}
huoy
发表于 2023-8-2 05:23:02