日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

openresty开发系列15--lua基础语法4表table和运算符

發布時間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 openresty开发系列15--lua基础语法4表table和运算符 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

openresty開發系列15--lua基礎語法4表table和運算符

lua中的表table

一)table (表)
Table 類型實現了一種抽象的"關聯數組"。即可用作數組,也可以用作map。
lua中沒有數組和map,都是用table這個類型

--數組
java?? int[] intArr = new int[]{1,2,3,4,5,6};
intArr[0]
intArr[1]
--map----> key value

HashMap map
map.add(key,value)

-- 初始化表
mytable = {}

-- 指定值
mytable[1]= "Lua"
mytable[2]= "Lua2"
mytalbe["k1"] = v1;

-- 移除引用
mytable = nil
-- lua 垃圾回收會釋放內存

lua類似數組的table ,索引值從1開始,,而不是0
mytable={1,2,3,4,5}
mytalbe[1]

mytable={"a","b","hello","world"}

mytable1 = {key1 = "v1",k2="v2",k3="v3"}

mytable2 = {"a",key1 = "v1","b",k2="v2",k3="v3","hello","world"}

print(mytable[1],mytable[2],mytable[3],mytable[4]);
print("------------------")
print(mytable1["key1"],mytable1["k2"],mytable1["k3"]);
print("------------------")
print(mytable2[1],mytable2["key1"],mytable2[2],mytable2["k2"],mytable2[3],mytable2[4]);

talbe?? key可以為 number 或字符串,,也可以是其他類型

table 是內存地址 賦值給變量

二)table進行賦值給變量,其實是把內存地址給了變量,變量只是引用了內存地址

local mytable1 = {"a",key1 = "v1","b",k2="v2",k3="v3","hello","world"}

local mytable2 =? mytable1

mytable2[1] = "aa"

print(mytable2[1])

print(mytable1[1])

mytable2 = nil? --移除的是引用

print("-------------")
print(mytable1[1])

內存指針--》C++

lua算數運算符


一)算術運算符

+?? ?加法?? ?
-?? ?減法?? ?
*?? ?乘法?? ?
/?? ?除法?? ?
%?? ?取余?? ?
^?? ?乘冪?? ?
-?? ?負號

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)

轉載于:https://www.cnblogs.com/reblue520/p/11429741.html

總結

以上是生活随笔為你收集整理的openresty开发系列15--lua基础语法4表table和运算符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。