lua 表达式及语句

这篇博客介绍了Lua语言中的表达式和语句,包括算术和关系运算符、逻辑运算符的特殊用法、字符串连接、table构造以及各种控制结构。文章强调了Lua中and和or的不同行为,以及如何利用它们实现三元操作。此外,还讨论了局部变量的声明和使用,以及for循环的两种形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

lua的表达式大多与c相同但也有不同以及缺少的情况
同时对于一个table对象的 运算符操作可以对其元表进行修改来实现 具体在面向对象会再讲

表达式

算术操作符

lua算术操作符有 +、-、* 、/、^(指数)、%、-(负)

但是没有位操作运算符,实现为操作需要自己定义函数


关系运算符

关系运算符包含:
< > <= >= == ~= 效果与c++相同 需要注意lua只有nil 和false 为假 其余均为真包括0 和空字符

a = 0
if a then 
    print("true")
end
a = ""
if a then 
    print("true")
end
true
true

逻辑运算符

逻辑运算符包含:and or not 其与c++的原始意思相同 与假(nil false)做比较
逻辑运算符同样有短路特效(and从左往右计算条件一个为false就结束计算,or有true就结束计算)
但是 lua 的and or 有很大的不同和高级使用

and or

对于and 如果 第一个参数为假返回第一个参数否则返回第二个参数
对于or 如果第一个参数为真返回第一个否则返回第二个

因此可以对一个参数赋值默认值

 lua
 a = nil
 b = a or 2
 print(b)
 2

三元式的实现:对于c的a ? b : c 这样的表达式在lua 也可以使用and or 来实现

max = (x > y) and x or y

字符串连接符

lua字符串连接符为’..’ 可以使用与字符串与数字 数字会被自动转化为字符串


table 构造式

lua 创建table 的方式即使用 一个‘{}’
同事可以在构造真申明其元素

a = { "1", "2" , "3" ,"4" , "5" , hello = "6","7"}
print(#a)
for i = 1, #a do 
    print(a[i])
end
for key, value in pairs(a) do
    print(key.." "..value)
end
6
1
2
3
4
5
7
1 1
2 2
3 3
4 4
5 5
6 7
hello 6

对于没有索引的元素lua会为其从1开始自动创建索引
在table 创建之后都可以使用索引来对table 添加或者删除字段


语句

lua的语句基本与c相同但也有其特性,local来声明局部变量以及多重赋值

赋值

直接对一个变量赋值(其实也是一个table的字段) 或者对一个table的字段赋值
多重赋值


x, y = y, x
a, b, c = 0, 1 ---- c = nil
a, b = 1, 2, 3 ----- ignore 3

同时函数也可以返回多个值用于赋值

局部变量

j = 10
local i = 1 

local 声明的变量属于一个函数体或者控制执行体或者程序块

程序中尽可能使用local变量来防止环境中的变量被覆盖
在一个程序段中都可以重新用local来覆盖一个作用域更广的变量


控制结构

if then elseif then else end

与c相同不在赘述

while do end

与c相同不在赘述

repeat until

与c相同不在赘述


for

数字型:
for var = value, targetValue, perUnit do

end
循环从value 开始以perUnit为单位递增到targetValue
当perUnit不声明时 默认为1

泛型 for 利用迭代器来遍历

for key, value in ipairs(table) do end

ipairs用于迭代数组 pairs用于任何类型的table


break return

与c相同不在赘述 注意lua 没有 continue

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值