簡單理解Lua

2021-07-12 08:03:17 字數 1796 閱讀 7275

1 table

1.1 table簡單理解就是一種特殊索引的特殊陣列。

特殊索引指:不僅使用某種特定索引,可以使用包括:字串、其它任意型別值(包括boolean,number,function,table,除了nil),簡單而言就是常量值,table的索引必須是已知值,所以使用變數作為索引值也能理解為以上所列出的索引值。

t={}

var="index"

t[var]=1000 -- 等同於 t["index"]

特殊陣列:table的值可以為任意型別值,可以將table表示為:普通陣列、符號表、集合、記錄、佇列等資料結構,同時lua中的模組(module)、包(package)和物件(object)也是使用tabable實現的

可以將table理解為一種索引陣列:

t["index"] = "value"

1.2 訪問table的值:使用索引對值進行新增,修改,讀取

為了更方便的訪問table,可以將table作為一條條記錄訪問,索引t["name"]提供了一種更簡便的寫法t.name,這是一種語法糖,此時的理解是,可以將name作為table的乙個字段,是一種固定的預定義的索引key,其實本質只是對字串索引的一種簡寫,注意:使用字段(.)方式訪問只適用於字串索引。

所以a.x和a[x]是完全不等價的,第二個中x必須是乙個已定義變數,否則a[x]就是乙個nil,以下是乙個例子說明字段(.)訪問的本質

a={}

a.x = 10 -- 等價於a["x"]

print(a.x) -- 10

x="y"

a[x] = 20 -- 等價於a["y"]或a.y

print(a[x]) -- 20

print(a["y"]) -- 20

print(a.y) -- 20

其它型別值只能使用特定的索引方式: t["index"] = "value"

1.3 table的構造式

初始化陣列的方式:索引是整數,從1 開始

t={}

t=print(t[1]) -- "1"

print(t[3]) -- "1"

print(t[5]) -- "true"

最基本的索引方式:t = ,索引可以為其它非nil已知的值

t={}

t=print(t[0]) -- "1"

print(t["2"]) -- "2"

print(t["x"]) -- "3"

print(t.x) -- "3"

使用記錄(.)風格的初始化方式

t= -- 等價 t={}; t.x=1; t.y=2,

--其實就是:

t=print(t.x) -- "1"

print(t["x"]) -- "1"

更經常使用的是混合的初始化方法,可以使用(;)分隔不同風格的初始化

,重複索引會被覆蓋,

陣列風格初始化值會從1開始,不會被覆蓋

t=; 1000, [1]=0}

for k,v in pairs(t) do print(k,v) end

--1 1000

--0 0

--x 1

--y 2

lua學習 lua函式理解

詞法定界指 巢狀的函式可以訪問他外部函式中的變數。第一類值指 可以被存放在變數中,也可以存放在表中,可以作為函式的引數,還可以作為函式的返回值。的值function foo x return 2 x end這段 實際上就等效於 foo function x return 2 x end所以實際上lu...

lua簡單入門

一 安裝windows下的lua環境,luaforwindows lua53.exe就是lua語言直譯器 按住shift滑鼠右鍵,此處開啟命令視窗 編寫乙個簡單的hello world程式 如果覺得簡單,可以給乙個for迴圈,列印1 10 正常執行,說明lua環境安裝沒有問題 二.lua語言的基本語...

lua簡單入門

一 安裝windows下的lua環境,luaforwindows lua53.exe就是lua語言直譯器 按住shift滑鼠右鍵,此處開啟命令視窗 編寫乙個簡單的hello world程式 如果覺得簡單,可以給乙個for迴圈,列印1 10 正常執行,說明lua環境安裝沒有問題 二.lua語言的基本語...