调用表格是一个有效的操作吗?

我非常新手lua但需要在lua中编程一段时间。

我有以下代码

local Events={}
Events('a')

从我粗略的理解来看,Events是一张表,而表格不能像函数一样被调用。

我把上述语句粘贴到带有Lua插件的Intellij Idea中,带有EmmyLua插件的Intellij Idea和ZeroBrane Studio中。没有IDE在代码中静态提示错误。

看图。 Intellij显示绿色的勾号,表示没有静态分析错误。 ZeroBrane Studio没有任何警告或错误,直到我按下运行按钮。

在这里输入图片描述

https://github.com/mpeterv/luacheck说这个代码是OK的

>luacheck --version
Luacheck: 0.23.0
Lua: PUC-Rio Lua 5.3
Argparse: 0.6.0
LuaFileSystem: 1.6.3
LuaLanes: 3.10.1

Total: 2 warnings / 0 errors in 1 file

>luacheck untitled.lua
Checking untitled.lua                             OK

Total: 0 warnings / 0 errors in 1 file

有人可以澄清为什么这些IDE不会静态地检测到这个简单的错误吗?调用一个表格有时可以是有效的操作吗?

点赞
用户3574628
用户3574628

一张表格如果拥有一个包含__call元方法的元表,则可以像函数一样被调用。请查看文档。

此外,由于Lua是动态类型的,当您尝试调用一个不可调用的变量时,静态分析器难以确定变量的类型。

2020-04-19 19:50:54