lua基本語法之基本運算子
阿新 • • 發佈:2021-06-26
一)算術運算子
+ 加法 - 減法 * 乘法 / 除法 % 取餘 ^ 乘冪 - 負號 print(1 + 2) -->列印 3 print(5 / 10) -->列印 0.5。 這是Lua不同於c語言的 print(5.0 / 10) -->列印 0.5。 浮點數相除的結果是浮點數 -- print(10 / 0) -->注意除數不能為0,計算的結果會出錯 print(2 ^ 10) -->列印 1024。 求2的10次方 local num = 1357 print(num % 2) -->列印 1 print((num % 2) == 1) -->列印 true。 判斷num是否為奇數 print((num % 5) == 0) -->列印 false。判斷num是否能被5整數
二)關係運算符
== 等於,檢測兩個值是否相等,相等返回 true,否則返回 false ~= 不等於,檢測兩個值是否相等,相等返回 false,否則返回 true 不想java !=,,~= > 大於,如果左邊的值大於右邊的值,返回 true,否則返回 false < 小於,如果左邊的值大於右邊的值,返回 false,否則返回 true >= 大於等於,如果左邊的值大於等於右邊的值,返回 true,否則返回 false <= 小於等於, 如果左邊的值小於等於右邊的值,返回 true,否則返回 false print(1 < 2) -->列印 true print(1 == 2) -->列印 false print(1 ~= 2) -->列印 true local a, b = true, false print(a == b) -->列印 false 注意:table, userdate 和函式;判斷的是引用地址的判斷 local a = { x = 1, y = 0} local b = { x = 1, y = 0} if a == b then print("a==b") else print("a~=b") end
三)邏輯運算子
and 邏輯與操作符。(A and B) 若 A 為 假,則返回 A,否則返回 B or 邏輯或操作符。(A or B) 若 A 為 真,則返回 A,否則返回 B not 邏輯非操作符。與邏輯運算結果相反,如果條件為 true,邏輯非為 false。 永遠只返回 true 或者 false 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(d or e) -->列印 0 print(not c) -->列印 true print(not d) -->列印 false 短路取值 原理 and 與,,,if(a and b and c) a and b and c a為真,b為真,c為真 返回c a為真,b為假,c為真 返回b a為假 bc不管bc為什麼值 返回a 一路去判斷變數值是否為真,一旦遇到某個變數為假,就立刻短路返回 返回值就是 假的變數值 a or b or c 一路判斷變數值是否為真,一但遇到某個變數為真,就立刻短路返回,返回值就是 真的變數值 a為真,bc 返回a a為假,b為真,不管c是什麼值 返回b
四)其他運算子
連線兩個字串 a..b ,其中 a 為 "Hello " , b 為 "World", 輸出結果為 "Hello World"。一元運算子,返回字串或表的長度。 #"Hello" 返回 5
很多字串連線 我們如果採用..這個運算子 ,效能是很低
推薦使用 table 和 table.concat() 來進行很多字串的拼接
五)優先順序
^
not # -
* / %
+ -
..
< > <= >= == ~=
and
or
------------------------
local a, b = 1, 2
local x, y = 3, 4
local i = 10
local res = 0
res = a + i < b/2 + 1 -->等價於res = (a + i) < ((b/2) + 1)
res = 5 + x^2*8 -->等價於res = 5 + ((x^2) * 8)
res = a < y and y <=x -->等價於res = (a < y) and (y <= x)