Lua 5.2.4:如果语句语法错误,我的代码找不到任何错误

时间:2019-09-10 02:27:54

标签: if-statement lua

我只是为了娱乐而搞一些简单的lua编程。我正在开发的程序只是应该接受一个参数,并根据数字线将其与自己的关系打印出来。这只是几个简单的公式,以及一个从数据构建和打印字符串的函数。

我的问题是程序中的每个'if'语句都返回,并且在'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)的结果。

代是数字上的一个位置。消极代表祖先,积极代表继任者。

数学函数是:

G(gen) = |gen| - 2 for gen < -2 and gen > 2
G(gen) = 0 for -2 < gen < 2
G(gen) is the number of "greats" in the relationship title

1 个答案:

答案 0 :(得分:1)

在lua中的变量定义中,您不需要var一词。

如果删除它们,您的代码将正常运行。


  

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

Programming in Lua: 2 – Types and Values

在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

Programming in Lua: 6 – More about Functions