类型提示/指定 lua 中的类型

Ari*_*157 3 lua types type-hinting code-hinting

python中有一个功能,您可以指定变量的类型或函数参数或其他东西,但我现在正在做一些lua,我想指定一个类型,因为我的自动完成显示类型为any,所以我认为lua可能也有这个功能

基本上我有一个名为 log 的函数:

local function log(message)
    io.stderr:write(string.format(" :: %s\n", message))
end
Run Code Online (Sandbox Code Playgroud)

有没有办法指定 arg 的类型message 和/“或至少”返回类型?我希望它是一个字符串:)

在Python中它是:

import sys

def log(message: str) -> None:
    sys.stderr.write(f" :: {message}\n")
Run Code Online (Sandbox Code Playgroud)

小智 10

Lua 动态处理变量类型,这就是不需要注释的原因。但是,您可以使用以下语法显式声明变量的类型:

---@type integer
local x = 3
Run Code Online (Sandbox Code Playgroud)

这完全是可选的。这样做可以提高可读性,因为这是内置于文档中的,并且许多 IDE 通过语法突出显示也可以识别。


LMD*_*LMD 6

Lua 不支持类型注释。您的选择如下:

  1. 使用支持类型的Lua 预处理器,例如TS2Lua或Teal
  2. 使用asserts 检查参数类型,如果不匹配则抛出运行时错误assert(type(message) == "string"):如果您向参数列表assert(select("#", ...) == 0)添加额外的可变参数,您还可以使用 an来检查参数数量...
  3. 使用内联注释来记录类型,可能与支持注释的文档生成器结合使用:local function log(message --[[string]]) --> nothing