Hy 等同于 Python 中强制关键字参数的函数参数中的 * 运算符

Hy equivalent to * operator in Python's function arguments that forces keyword arguments

最近我一直在尝试用 Discord.py 在 Hy 中编写一个简单的机器人。在 Discord.py 中,我们可以编写这样的命令将最后一个参数转换为包含空格的完整字符串:

@commands.command(description="", help="")
async def say(self, ctx, level, *, remains):
    ...

但是如果我在 Hy 中这样写:

#@((commands.command :description "" :help "")
        (defn/a say [self ctx level * remains]
            ...))

它会抱怨缺少必需的参数“文本”。更奇怪的是Hy官网defn部分的示例代码:

(defn compare [a b * keyfn [reverse False]]
  (setv result (keyfn a b))
  (if (not reverse)
    result
    (- result)))

甚至在 hy --spy 下都不起作用。是我用错了还是有正确的处理方法?

(defn compare…) 适合我。听起来您使用的 Hy 版本 运行 与您正在阅读的文档版本不匹配。