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

页: 1 [2] 3 4
查看完整版本: 【PyMUD】PyMUD使用指南-基础篇(一)