【Lua 入门基础篇(四)】运算符

简介: 笔记

一、Lua运算符


算术运算符

关系运算符

逻辑运算符

其他运算符


1. 算术运算符

A , B = 10 , 20 A, B = 10, 20A,B=10,20

1.png

  • ^

在 lua 中,/ 用作除法运算,计算结果包含小数部分,// 用作整除运算,计算结果不包含小数部分:

a = 5
b = 2
print("除法运算 - a/b 的值为 ", a / b )
print("整除运算 - a//b 的值为 ", a // b )
除法运算 - a/b 的值为   2.5
整除运算 - a//b 的值为  2

2. 关系运算符

A,B=10,20

2.png

不等于: ~=


3. 逻辑运算符

A,B=true,false


3.png

4. 其他运算符

4.png

注意: # 对 table 获取长度时,根据的是表的最大索引值。(也不确定是)

当所获取的table中存在nil时,#返回的数值是无意义的。

local tab = {}
tab[1] = 1
tab[2] = 2
tab[3] = nil
print(#tab)
--结果为2
  • 有的结果是0,我本地跑出3。所以不在讨论存在nil的table取长度情况。
local tab2 = {}
tab2[1] = nil
tab2[2] = 2
tab2[3] = 3
print(#tab2)
--结果为3

对于不存在nil的table,取值也非常玄乎!!!

所以我们采用下面的封装方法,获取table的元素个数:(不含nil)

function table.length(t)
    local i = 0
    for k, v in pairs(t) do
        i = i + 1
    end
    return i
end

5. 运算符优先级

从高到低的顺序:

^
not    - (unary)
*      /       %
+      -
..
<      >      <=     >=     ~=     ==
and
or

除了 ^ 和 .. 外所有的二元运算符都是左连接的。


-x^2                 --<-->       -(x^2)

x^y^z                --<-->       x^(y^z)

1

2

二、三目运算符:(a and {b} or {c})[1]


Lua 中没实现三目运算的操作。


C语言中:a ? b : c, a 为 true 返回 b 否则返回 c。


这里用Lua代码等价实现三目运算:

(a and {b} or {c})[1]



三、不同于C的:and 和 or


两个 number 类型的数值:


进行 and 操作,返回在 and 右边那个数值。

进行 or 操作,返回在or 左边那个数值。

a, b, c = 1, 2, 3
print(a and b)    --> 2
print(a or b)   --> 1
print(a and b or c) --> 2
print(a or b and c) --> 1


相关文章
|
XML Java 数据格式
【Lua基础 第2章】lua遍历table的方式、运算符、math库、字符串操作方法
lua遍历table的方式、运算符、math库、字符串操作方法
677 0
【Lua基础 第2章】lua遍历table的方式、运算符、math库、字符串操作方法
|
NoSQL 安全 Java
Redis从入门到精通之Lua 脚本
Lua 是一种轻量级的脚本语言,被广泛应用于游戏开发、嵌入式系统、Web 开发、科学计算等领域。Redis 内置了 Lua 解释器,使得用户可以通过编写 Lua 脚本来扩展 Redis 的功能。在 Redis 中,可以使用 EVAL 和 EVALSHA 命令执行 Lua 脚本。
766 7
Redis从入门到精通之Lua 脚本