运算符
Lua 支持以下运算符:
- 算术运算符:
+
(加),-
(减),*
(乘),/
(除),^
(幂),%
(取模)。 - 关系运算符:
==
(等于),~=
(不等于),>
(大于),>=
(大于等于),<
(小于),<=
(小于等于)。 - 逻辑运算符:
and
(与),or
(或),not
(非)。 - 连接运算符:
..
(连接)。 - 赋值运算符:
=
(赋值)。
print(1 + 2) -- 3
print(10 - 5) -- 5
print(2 * 3) -- 6
print(10 / 3) -- 3.3333333333333335
print(2 ^ 3) -- 8.0
print(10 % 3) -- 1
print(1 == 1) -- true
print(1 ~= 1) -- false
print(1 < 2) -- true
print(1 <= 2) -- true
print(1 > 2) -- false
print(1 >= 2) -- false
print(true and false) -- false
print(true or false) -- true
print(not true) -- false
print("Hello" .. "world!") -- Helloworld!
a = 10
a = a + 2 -- 12
print(a) -- 12
a, b = 1, 2; c = 1; d = 2
y, x = x, y -- swap(x,y)
x = 1, 2, 3
x, y = 1print(a, b, c, d, x, y) -- 1 2 1 2 1 nil
a and b 当 a 为真时返回 b, 当 a 为假时,返回 a 条件表达式 a?b:a
a or b 当 a 为真时返回 a, 当 a 为假时,返回 b 条件表达式 a?a:b
not a 当 a 为真时返回假,当 a 为假时,返回真 条件表达式 a?false:true
local c = nil
local d = 0
local e = 100
print(c and d) -->打印 nil
print(c and e) -->打印 nil
print(d and e) -->打印 100
print(c or d) -->打印 0
print(c or e) -->打印 100
print(not c) -->打印 true
print(not d) -->打印 false
(a and {b} or {c})[1] --此时 a 为真,表达式为{b},为真,取其第一个元素的内容
变量
Lua 中的变量分为全局变量和局部变量。
全局变量:全局变量在整个程序中都可以访问,可以被赋值、修改。
所有的变量默是全局,除非显式地声明为 local 局部。全局变量,
可以不经定义直使用,默认为 nil
局部变量:局部变量只在函数内部访问,函数执行完毕后,局部变量会被销毁。
当类型被指定为 local 局部的一个变量,它的范围是有限的在自己的
范围内使用。需要加 local 修饰 ,默认值为 nil。
-- 全局变量
a = 10-- 局部变量
function test()local b = 20print(a + b)
endtest() -- 30
print(a) -- 10
do end 块:do end 块可以用来创建临时变量,其中的变量只在 do end 块中有效。
dolocal temp = 10print(temp) -- 10
end
控制结构
Lua 支持以下控制结构:
if
语句:条件判断语句。while
语句:循环语句。repeat
语句:重复语句。for
语句:循环语句。function
语句:定义函数。return
语句:返回语句。
if 语句
if 语句用于条件判断,根据条件是否成立,执行对应的代码块。
if a > 0 thenprint("a is positive")
elseif a < 0 thenprint("a is negative")
elseprint("a is zero")
end
while 语句
while 语句用于循环,当条件成立时,执行循环体代码。
i = 1
while i <= 10 doprint(i)i = i + 1
end
repeat 语句
while 当假是退出, repeat 直到为真时才退出
repeat 语句用于重复执行代码块,直到条件不成立时结束。
Lua 中的 repeat 也
可以在使用 break 退出
i = 1
repeatprint(i)i = i + 1
until i > 10
until false --死循环
for 语句
for 语句用于循环,可以指定起始值、终止值、步长,并在每次循环中执行代码块。
循环的控制变
量默认是局部的
for var = exp1, exp2 do
<执行体>
endfor var = exp1, exp2, exp3 do
<执行体>
endexp1 开始值
exp2 终止值
exp3 步长
for i = 1, 10 doprint(i)
endfor i = 1, 10, 2 doprint(i)
end
generic for 语句
generic for 语句用于遍历数组、表、字符串等。
ipairs 是 Lua 提供的一个迭代器函数,用来迭代数组
a = {1, 2, 3, 4, 5}for i, v in ipairs(a) doprint(i, v)
endprint("--------")for k, v in pairs(a) doprint(k, v)
end