lua 运算符和控制语句

运算符

Lua 支持以下运算符:

  • 算术运算符:+(加),-(减),*(乘),/(除),^(幂),%(取模)。
  • 关系运算符:==(等于),~=(不等于),>(大于),>=(大于等于),<(小于),<=(小于等于)。
  • 逻辑运算符:and(与),or(或),not(非)。
  • 连接运算符:..(连接)。
  • 赋值运算符:=(赋值)。
lua 复制代码
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
lua 复制代码
a, b = 1, 2; c = 1; d = 2
y, x = x, y -- swap(x,y)
x = 1, 2, 3
x, y = 1

print(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

lua 复制代码
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。

lua 复制代码
-- 全局变量
a = 10

-- 局部变量
function test()
  local b = 20
  print(a + b)
end

test() -- 30
print(a) -- 10

do end 块:do end 块可以用来创建临时变量,其中的变量只在 do end 块中有效。

lua 复制代码
do
  local temp = 10
  print(temp) -- 10
end

控制结构

Lua 支持以下控制结构:

  • if 语句:条件判断语句。
  • while 语句:循环语句。
  • repeat 语句:重复语句。
  • for 语句:循环语句。
  • function 语句:定义函数。
  • return 语句:返回语句。

if 语句

if 语句用于条件判断,根据条件是否成立,执行对应的代码块。

lua 复制代码
if a > 0 then
  print("a is positive")
elseif a < 0 then
  print("a is negative")
else
  print("a is zero")
end

while 语句

while 语句用于循环,当条件成立时,执行循环体代码。

lua 复制代码
i = 1
while i <= 10 do
  print(i)
  i = i + 1
end

repeat 语句

while 当假是退出, repeat 直到为真时才退出

repeat 语句用于重复执行代码块,直到条件不成立时结束。

Lua 中的 repeat 也

可以在使用 break 退出

lua 复制代码
i = 1
repeat
  print(i)
  i = i + 1
until i > 10
until false --死循环

for 语句

for 语句用于循环,可以指定起始值、终止值、步长,并在每次循环中执行代码块。

循环的控制变

量默认是局部的

lua 复制代码
for var = exp1, exp2 do
<执行体>
end

for var = exp1, exp2, exp3 do
<执行体>
end

exp1 开始值
exp2 终止值
exp3 步长
lua 复制代码
for i = 1, 10 do
  print(i)
end

for i = 1, 10, 2 do
  print(i)
end

generic for 语句

generic for 语句用于遍历数组、表、字符串等。

ipairs 是 Lua 提供的一个迭代器函数,用来迭代数组

lua 复制代码
a = {1, 2, 3, 4, 5}

for i, v in ipairs(a) do
  print(i, v)
end

print("--------")

for k, v in pairs(a) do
  print(k, v)
end
相关推荐
墨染新瑞2 分钟前
两个有趣的小东西(qt和类型转换)
开发语言·网络·qt
Komorebi⁼12 分钟前
JavaScript的对象事件监听处理,交互式网页的关键!
开发语言·前端·javascript·css·html
梦想画家21 分钟前
快速解锁Rust Slice特性
开发语言·rust·slice
WangMing_X33 分钟前
C# 一个工具类让winform自动根据窗体大小缩放所有控件
开发语言·windows·c#
平头哥在等你41 分钟前
求100之内的素数
c语言·开发语言·算法
Bruce小鬼42 分钟前
解决MAC安装QT启动项目不显示窗口问题
开发语言·qt·macos
188_djh1 小时前
# Python基础到实战一飞冲天(一)--linux基础(一)
linux·开发语言·python·ubuntu·centos·os·operationsystem
有梦想的Frank博士1 小时前
R语言*号标识显著性差异判断组间差异是否具有统计意义
开发语言·信息可视化·r语言
_flierx1 小时前
【C++】RBTree——红黑树
开发语言·c++
l_tian_tian_1 小时前
JAVA——反射
java·开发语言