创建带有操作数的数组会导致成员为零

问题描述

我刚开始学习lua,遇到了一个奇怪的问题。下面的代码...

local xx = 100
vertices0 = {xx,xx}
vertices1 = {xx−5,xx-5}

结果...

一个包含 (100,100) 的数组,用于顶点 0(如预期)但是 在包含 (nil,95) for vertices1 的数组中。

我真的不明白是什么导致 nil 出现。我希望得到一个 (95,95) 的数组。

我查看了文档并尝试用谷歌搜索问题。但是没能解决这个问题。

顺便说一句 - 我正在使用 love2d,但“常规”lua 似乎会导致相同的行为。

解决方法

xx−5 不使用 - 而是使用 ,lua 将 视为标识符的一部分,因此 xx−5 是一个单独的标识符而不是所需的减法操作xx - 5

local xx = 100
local xx−5 = 100
vertices0 = {xx,xx}
vertices1 = {xx−5,xx-5}
  
print(vertices1[1])

这似乎适用于 5.1,但不适用于更高版本的 lua。此外,如果您在运算符及其操作数周围放置一个空格,则可以更容易地看到这样的问题,这对于可读性来说确实是一个不错的样式选择。

vertices1 = {xx − 5,xx - 5}

另外,如果你有语法高亮,你会注意到不正确的字符没有被正确高亮。