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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Lua——table(表)的使用

發布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Lua——table(表)的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、基本知識
  • 二、table的構造
    • 1.使用步驟
    • 2.示例演示
  • 三、table的操作
    • 1.操作語法
    • 2.示例演示


一、基本知識

(1)table 是 Lua 的一種數據結構用來幫助我們創建不同的數據類型,如:數組、字典等。
(2)Lua table 使用關聯型數組,可以用任意類型的值來作數組的索引,但這個值不能是 nil
(3)Lua table 是不固定大小的,你可以根據自己需要進行擴容。
(4)Lua也是通過table來解決模塊、包和對象的。 例如string.format表示使用"format"來索引table string。
說白了,table的存儲方式和使用方式就類似是key-value對。

二、table的構造

1.使用步驟

構造器是創建和初始化表的表達式。表是Lua特有的功能強大的東西。最簡單的構造函數是{},用來創建一個空表。可以直接初始化數組:

-- 初始化表 mytable = {}-- 指定值 mytable[1]= "Lua"-- 移除引用 mytable = nil -- lua 垃圾回收會釋放內存

2.示例演示

當我們為 table1 設置元素,然后將 table1賦值給 table2,則 table1 與table2都指向同一個內存。如果table1設置為 nil ,則 table2同樣能訪問 table1的元素。如果沒有指定的變量指定這個內存,Lua的垃圾回收機制會清理相對應的內存。

--初始化table1 table1 = {} print("table1的類型是:",type(table1))table1["age"] = 22 table1["name"] = "xiaomeng" print("table1中的age數據類型為:",type(table1["age"]),"table1中的name數據類型為:",type(table1["name"])) print("table1中的age為:",table1["age"],"table1中的name為:",table1["name"])--table2和table1共享數據 table2 = table1 table2["age"] = 19 table2["name"] = "xiaohua" print("table1中的age數據類型為:",type(table1["age"]),"table1中的name數據類型為:",type(table1["name"])) print("table1中的age被改為:",table1["age"],"table1中的name被改為:",table1["name"])--由于tbale1和table2共享數據,所以table2的操作table1受影響 table2[1]=3 print(table1[1])table1 = nil--釋放table1變量,但是table2仍然可以訪問 print("table2中的age和name數據分別為:",table2["age"],table2["name"])table1 = nil--釋放table2變量 --Lua垃圾回收會釋放內存

運行結果:

三、table的操作

1.操作語法

2.示例演示

(1)連接演示
注意sep是分隔符,start和end不寫的話,就默認從頭連接到尾。

table1={1,"wer","asdf",3}print(table.concat(table1)) --默認將所有內容都連接起來 print(table.concat(table1, "@1")) --默認將所有內容都連接起來,且用兩段之間用'@1'分割 print(table.concat(table1,"@2",2)) --將table1的內容從第二個到末尾連接起來,'@2'分割 print(table.concat(table1,"@3",2,3))--將table1的內容從第2個連接到第3個,用'@3'分割

運行結果:

(2)插入和刪除演示
pos可選,不寫的話,默認在尾部插入

--注意數據結構table下標從1開始 table1={1,2,3,"a","b"}table.insert(table1,"c") print("table1[6]的值為:",table1[6])table.insert(table1,4,"d") print("table1[4]的值為:",table1[4])print("現在table1的內容為:",table.concat(table1,","))c=table.remove(table1)--默認返回最后一個元素,并且將其移除 print("被移除的元素為:",c) print("現在table1的內容為:",table.concat(table1,","))c=table.remove(table1,1)--返回第一個元素,并且將其移除 print("被移除的元素為:",c) print("現在table1的內容為:",table.concat(table1,","))

運行結果:

(3)排序演示

table1={"aqwer","basdf","cadef","awertt"} print("現在table1中的內容為:",table.concat(table1,","))table.sort(table1) print("排序后table1中的內容為:",table.concat(table1,","))table1=nil

運行結果:

able1={1,3,5,7,2,1} print("現在table1中的內容為:",table.concat(table1,",")) table.sort(table1) print("排序后table1中的內容為:",table.concat(table1,","))table1=nil

運行結果:

當內容中既有number類型又有string類型的元素時,無法進行排序。

對于table.maxn函數,Lua5.0版本后無法使用此函數。

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Lua——table(表)的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

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