我只是为了娱乐而搞一些简单的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
答案 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