Lua中的感叹号有什么作用?

问题就在标题中,我看到有人之前使用了这个,但我不知道 ! 的用法。

local lowestIndex = 0;
local lowestValue = false;
for k, v in ipairs(playerElement) do
    if !lowestValue or v.value < lowestValue then
        lowestIndex = k;
        lowestValue = v;
    end
end
点赞
用户827263
用户827263

这是一个语法错误。

一些语言,主要是 C 及其相关语言,使用 ! 作为逻辑“非”运算符,但是 Lua 使用 not 关键字,并且据我所知不使用 ! 代表任何东西(甚至不作为不等式运算符的一部分;Lua 使用 ~= 而 C 使用 !=)。

你看起来使用了某个不了解这一点的人编写的 Lua 代码。

2014-02-13 23:22:54
用户1516484
用户1516484

正如其他人所说,在Lua中通常没有功能,你发布的代码通常不是有效的。然而,很容易扩展Lua的解析器以允许自定义语法,并且嵌入Lua的项目添加“更熟悉”的C-style语法(如!var!=),而不仅仅是not var~= 。一个值得一提的项目是Garry's Mod,我相信还有其他类似的项目。

当然,如果可能的话,最好避免在正常语法可用时使用自定义语法(或首先对其进行自定义),以避免出现这种混淆。

2014-02-14 00:00:21