跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Cerulean)
  • 不使用皮肤
折叠
品牌标识

PyMUD官方论坛

  1. 主页
  2. 版块
  3. PyMUD讨论区
  4. 删除变量的cmd

删除变量的cmd

已定时 已固定 已锁定 已移动 PyMUD讨论区
4 帖子 2 发布者 104 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • T 离线
    T 离线
    terry
    写于 最后由 编辑
    #1

    写了删除变量的cmd,@newstart 麻烦过过目,看看有没有问题

    import traceback, re, asyncio
    from pymud import Command, IConfig
    
    class CmdDelVar(Command, IConfig):
        _help = """
        通过命令行删除废弃变量的命令:
            正常指令      含义
            delvar xxx:    删除变量名为'xxx'的变量
            delvar :      删除所有变量
        """
        def __init__(self, session, *args, **kwargs):
            # delvar命令后,删除所有变量
            pattern = r"^(\bdelvar\b)(?:\s+([a-zA-Z_][a-zA-Z0-9_]*))?$"
            kwargs.setdefault("id", "cmd_delvar")
            super().__init__(session, patterns = pattern, *args, **kwargs)
        def __unload__(self):
            super().__unload__()
    
        async def execute(self, cmd, *args, **kwargs):
            """
            执行delvar命令,删除所有变量或指定变量
            """
            try:
                m = re.match(self.patterns, cmd)
                if m:
                    para = list()
                    for i in range(1, 3):
                        if m[i] != None:
                            para.append(m[i])
                    if (len(para) == 2):
                        self.session.delVariable(para[1])
                        self.session.info(f"变量 {para[1]} 已删除")
                    else:
                        var_list = list()
                        for var in self.session.vars.keys():
                            var_list.append(var)
                        for var in var_list:
                            self.session.delVariable(var)
                        self.session.info("所有变量已删除")
            except Exception as e:
                self.error(f"异步执行中遇到异常, {e}, 类型为 {type(e)}")
                self.error(f"异常追踪为: {traceback.format_exc()}")
    
    1 条回复 最后回复
    0
    • N 离线
      N 离线
      newstart
      写于 最后由 编辑
      #2

      没看懂,这是要做什么?首先,Command不是这么用的,其次,也没看到具体执行删除的操作呢?

      1 条回复 最后回复
      0
      • T 离线
        T 离线
        terry
        写于 最后由 terry 编辑
        #3

        目的就是调试过程中,会写一些变量,但由于没规划好,有些变量名字不合理就换掉了,但由于断线后所有变量都会持久化保存在.mud中,下次连线会自动载入,这样这些没用的变量就会常驻,用这个命令把他们清除掉。
        我觉得Command不是这样用的,这个cmd并不和mud游戏相关,但我利用它实现了这个想要的功能。

        删除代码在这

        if (len(para) == 2):
                            self.session.delVariable(para[1])
                            self.session.info(f"变量 {para[1]} 已删除")
                        else:
                            var_list = list()
                            for var in self.session.vars.keys():
                                var_list.append(var)
                            for var in var_list:
                                self.session.delVariable(var)
                            self.session.info("所有变量已删除")
        
        1 条回复 最后回复
        0
        • N 离线
          N 离线
          newstart
          写于 最后由 编辑
          #4

          前面电脑上看的时候,代码只到unload后面就没了,我都没看到execute部分🤣🤣🤣

          1 条回复 最后回复
          0
          回复
          • 在新帖中回复
          登录后回复
          • 从旧到新
          • 从新到旧
          • 最多赞同


          • 登录

          • 没有帐号? 注册

          • 登录或注册以进行搜索。
          Powered by NodeBB Contributors
          • 第一个帖子
            最后一个帖子
          0
          • 版块
          • 最新
          • 标签
          • 热门
          • 世界
          • 用户
          • 群组