首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua 5.2.4: If语句语法错误,我找不到代码中的任何错误

Lua 5.2.4: If语句语法错误,我找不到代码中的任何错误
EN

Stack Overflow用户
提问于 2019-09-10 10:27:54
回答 1查看 208关注 0票数 2

我只是在玩一些简单的lua编程,只是为了好玩。我正在做的程序只是简单地接受一个参数,并根据数字行打印出与自己的关系。它只是几个简单的公式和一个从数据构建和打印字符串的函数。

我的问题是,程序中的每个'if‘语句都返回错误“'=’expected 'if‘”

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

我已经修改了if语句,尝试了不同的比较器,用文字替换了所有变量,只剩下单个子句语句,但这些都不起作用。

这是我第一次尝试从终端运行lua。在过去,我只为Defold编写lua,从来没有遇到过这样的事情。

我将以该问题的一个实例为例:

代码语言:javascript
复制
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'"

预期的结果是,函数返回函数G( gen )的任一结果,具体取决于gen适合的范围。

生成是数字上的一个位置。负代表祖先,正代表继承者。

数学函数是:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2019-09-10 22:51:36

您不需要在lua中的变量定义中使用术语var

如果你删除了它们,你的代码就会运行而不出错。

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

Programming in Lua: 2 – Types and Values

在Lua中,您不需要声明变量的类型,而是让变量的值定义类型。

这意味着不需要执行以下操作:

代码语言:javascript
复制
local number i = 7
local boolean check = false
local string str = "hello world"

取而代之的是你

代码语言:javascript
复制
local i = 7
local check = false
local str = "hello world"

现在,上面的两个代码块都将不会出现错误,但是第一个代码块只会这样做,因为我们对变量应用了一个值。如果我们删除我们得到的赋值,则会出现错误:

代码语言:javascript
复制
local number i

我不能找到为什么赋值使这是“可接受的”。我相信这是因为Lua抛出了第一个变量“i”,并继续使用第二个名称。

function有一点不同,因为您可以通过几种不同的方式来编写定义:

代码语言:javascript
复制
local function x(y)
    print(y)
end

但以上只是语法上的糖:

代码语言:javascript
复制
local x = function(y)
    print(y)
end

Programming in Lua: 6 – More about Functions

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57863266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档