Unity熱更新02-Lua基礎-09-Lua複雜資料型別02 table
阿新 • • 發佈:2020-10-28
print("**********複雜資料型別——表2************") print("**********字典************") print("**********字典的申明************") --字典是由鍵值對構成 a = {["name"] = "US", ["age"] = 14, ["1"] = 5} --訪問當個變數 用中括號填鍵 來訪問 print(a["name"]) print(a["age"]) print(a["1"]) --還可以類似.成員變數的形式得到值 print(a.name) print(a.age) --雖然可以通過.成員變數的形式得到值 但是不能是數字 print(a["1"]) --修改 a["name"] = "TLS"; print(a["name"]) print(a.name) --新增 a["sex"] = false print(a["sex"]) print(a.sex) --刪除 a["sex"] = nil print(a["sex"]) print(a.sex) print("**********字典的遍歷************") --如果要模擬字典 遍歷一定用pairs for k,v in pairs(a) do --可以傳多個引數 一樣可以打印出來 print(k,v) end for k in pairs(a) do print(k) print(a[k]) end for _,v in pairs(a) do print(_, v) end print("**********類和結構體************") --Lua中是預設沒有面向物件的 需要我們自己來實現 --成員變數 成員函式。。。。 Student = { --年齡 age = 1, --性別 sex = true, --成長函式 Up = function() --這樣寫 這個age 和表中的age沒有任何關係 它是一個全域性變數 --print(age) --想要在表內部函式中 呼叫表本身的屬性或者方法 --一定要指定是誰的 所以要使用 表名.屬性 或 表名.方法 print(Student.age) print("我成長了") end, --學習函式 Learn = function(t) --第二種 能夠在函式內部呼叫自己屬性或者方法的 方法 --把自己作為一個引數傳進來 在內部 訪問 print(t.sex) print("好好學習,天天向上") end } --Lua中 .和冒號的區別 Student.Learn(Student) --冒號呼叫方法 會預設把呼叫者 作為第一個引數傳入方法中 Student:Learn() --申明表過後 在表外去申明表有的變數和方法 Student.name = "Sir" Student.Speak = function() print("說話") end --函式的第三種申明方式 function Student:Speak2() --lua中 有一個關鍵字 self 表示 預設傳入的第一個引數 print(self.name .. "說話") end --C#要是使用類 例項化物件new 靜態直接點 --Lua中類的表現 更像是一個類中有很多 靜態變數和函式 print(Student.age) print(Student.name) Student.Up() Student.Speak() Student:Speak2() Student.Speak2(Student) print("**********表的公共操作************") --表中 table提供的一些公共方法的講解 t1 = { {age = 1, name = "123"}, {age = 2, name = "345"} } t2 = {name = "UnitySir", sex = true} print("**********插入************") --插入 print(#t1) table.insert(t1, t2); print(#t1) print(t1[1]) print(t1[2]) print(t1[3]) print(t1[3].sex) print("**********移除************") --刪除指定元素 --remove方法 傳表進去 會移除最後一個索引的內容 table.remove(t1) print(#t1) print(t1[1].name) print(t1[2].name) print(t1[3]) --remove方法 傳兩個引數 第一個引數 是要移除內容的表 --第二個引數 是要移除內容的索引 table.remove(t1, 1) print(t1[1].name) print(#t1) print("**********排序************") t2 = {5,2,7,9,5} --傳入要排序的表 預設 降序排列 table.sort(t2) for _,v in pairs(t2) do print(v) end print("**********降序************") --傳入兩個引數 第一個是用於排序的表 --第二個是 排序規則函式 table.sort(t2, function(a,b) if a > b then return true end end) for _,v in pairs(t2) do print(v) end print("**********拼接************") tb = {"123", "456", "789", "10101"} --連線函式 用於拼接表中元素 返回值 是一個字串 str = table.concat(tb, ",") print(str)