Lua 5.2.4:if 语句语法错误,我的代码中没有问题

我正在开心地尝试一些简单的 Lua 编程。我正在制作的程序只是简单地需要接收一个参数,并且根据一个数字线打印出与自己的关系。这只是几个简单的公式和一个函数,可以从数据中构建和打印字符串。

我的问题是,我的程序中每个'if'语句都会出现错误“'=' expected near 'if'”

到目前为止,我已经尝试查看是否存在已知版本问题(不存在,并且我不知道为什么会有)

我已经改变了我的if语句,尝试了不同的比较器,用字面量代替了所有变量,剥离单语句,但是这些都不起作用。

这是我首次从终端运行 Lua。过去我只是为 Defold 编写 Lua,并且从未遇到过这样的问题。

我将把一个问题实例作为例子:

function number_of_greats(generation)
    local var g = math.abs(generation)
    local var num_greats

    if generation > -2 or generation then
        num_greats = 0
    else
        num_greats = g-2
    end

    return num_greats
end

错误是"expected '=' near 'if'"

预期结果是函数根据 gen 所适用的范围返回函数G(gen)的任一结果。

generation是数上的一个位置。负数代表祖先,正数代表后继。

数学函数是:

G(gen) = |gen| - 2 for gen < -2 and gen > 2
G(gen) = 0 for -2 < gen < 2
G(gen) 是关于关系的“greats”数量
点赞
用户7396148
用户7396148

在 Lua 中,你不需要使用 var 来定义变量。

如果你删除了它们,你的代码将不会出错。


Lua 是一种动态类型语言。这种语言中没有类型定义;每个值都有自己的类型。

《在 Lua 中编程:2 - 类型和值》

在 Lua 中,你不需要声明变量的类型,相反,你让变量的值来定义类型。

这意味着我们不需要写出这样的代码:

local number i = 7
local boolean check = false
local string str = "hello world"

而只需要这样:

local i = 7
local check = false
local str = "hello world"

现在,上面两个代码块都不会出现错误,但是第一个只有在我们给变量赋值时才能运行。如果我们删除了赋值,就会出现错误:

local number i

我没能找到为什么赋值会让这种情况 "可以接受"。我认为这是因为 Lua 抛弃了第一个变量名 number,继续使用第二个 i


function 有一些不同的写法:

local function x(y)
    print(y)
end

上面的代码只是语法糖:

local x = function(y)
    print(y)
end

《在 Lua 中编程:6 - 更多关于函数》

2019-09-10 14:51:35