04 Lua 运算符
【摘要】 Lua 体积小、启动速度快,一个完整的 Lua 解释器不过200k,在所有脚本引擎中,Lua 的速度可以说是最快的。所以 Lua 是作为嵌入式脚本的最佳选择。
我是陈皮,一个在互联网 Coding 的 ITer,个人微信公众号「陈皮的JavaLib」关注第一时间阅读最新技术文章。
运算符
赋值运算符
赋值运算符=
可以将一个或者多个值赋值给一个或者多个变量。
name = "chenpi"
age = 18
a, b = 10, 20
print(name) -- chenpi
print(age) -- 18
print(a) -- 10
print(b) -- 20
而且还可以简单交互两个变量的值,如下
a, b = 10, 20
print(a) -- 10
print(b) -- 20
a, b = b, a
print(a) -- 20
print(b) -- 10
算数运算符
- 加法:+
- 减法:-
- 乘法:*
- 除法:/
- 取模:%
- 取负:-
- 求幂:^
print(10 + 20) -- 30
print(20 - 10) -- 10
print(2 * 5) -- 10
print(15 / 2) -- 7.5
print(15 % 2) -- 1
print(-20) -- -20
print(2^5) -- 32
比较运算符
- 大于:>
- 大于等于:>=
- 小于:<
- 小于等于:<=
- 等于:==
- 不等于:~=
print(10 > 20) -- false
print(20 >= 10) -- true
print(2 < 5) -- true
print(15 <= 2) -- false
print(15 == 12) -- false
print(12 ~= 13) -- true
关系运算符
- 并且:and
- 或者:or
- 非:not
对于 and 运算符,如果第一个表达式为真,并且第二个表达式的运算结果不是一个布尔型的值时,会输出这个值。
print(10 > 5 and 2 ~= 3) -- true
print(5 > 10 and 5) -- false
print(5 < 10 and 5) -- 5
print(5 < 10 and nil) -- nil
print(5 < 10 and "chenpi") -- chenpi
对于 or 运算符,如果第一个表达式为假,并且第二个表达式的运算结果不是一个布尔型的值时,会输出这个值。
print(10 > 5 or 2 ~= 2) -- true
print(5 > 10 or 10 > 2) -- true
print(5 < 2 or 5) -- 5
print(5 < 2 or nil) -- nil
print(5 < 2 or "chenpi") -- chenpi
not 取非,即将布尔值取反,在 Lua 中,只有 false 和 nil 代表 false,其他值都代表 true 。
print(not 5) -- false
print(not 0) -- false
print(not "chenpi") -- false
print(not nil) -- true
print(not true) -- false
print(not false) -- true
print(not (5 > 4 and 5 == 3)) -- true
print(not type) -- false
print(not print) -- false
连接符
Lua 中对字符串的连接使用符号..
,而不是像其他语言使用+
,加号在 Lua 中代表运算。
name = "Hello" .. " " .. "ChenPi"
print(name) -- Hello ChenPi
print("Lua " .. name .. "!") -- Lua Hello ChenPi!
age = 18
print(age .. " years old") -- 18 years old
b = true
print("boolean:" .. b) -- 不能连接boolean值,会报错 attempt to concatenate global 'b' (a boolean value)
print(address .. " area") -- 不能连接一个未定义的变量,会报错 attempt to concatenate global 'address' (a nil value)
print(nil .. " area") -- 不能连接一个nil值,会报错 attempt to concatenate a nil value
print(type .. " function") -- 不能连接一个函数,会报错 attempt to concatenate global 'type' (a function value)
print("15" + 20) -- 35 , 使用+的时候,会将数字字符串转为数字进行运算
print("a" + 10) -- attempt to perform arithmetic on a string value
求长度运算符#
#
井号可以求字符串的长度,也可以求表中的元素个数。
t = {1, 2, "a", true}
print(#t) -- 4
print(#t[3]) -- 1
print(#"chenpi") -- 6
-- 遍历表中所有元素
for i = 1, #t do
print(t[i])
end
借助井号,我们可以向数组(表如果所有键都是数字可认为是数字)尾部添加元素。
t = {"a", "b", "c"}
t[#t + 1] = "d"
t[#t + 1] = "e"
for i = 1, #t do
print(t[i])
end
-- 输出 a b e d e
位操作运算符
print(1 << 3) -- 8 位左移
print(8 >> 2) -- 2 位右移
print(2 | 1) -- 3 位异或
print(4 & 5) -- 4 位与
print(~2) -- -3 位取反
本次分享到此结束啦~~
如果觉得文章对你有帮助,点赞、收藏、关注、评论,您的支持就是我创作最大的动力!
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)