Lua學習筆記(六)

2022-02-03 02:15:40 字數 1208 閱讀 7048

-- 元類

people= -- 此處定義的元素都是相當於c++的靜態成員變數

-- 基類方法new

function people:new(o,n,a)

o=o or {}

setmetatable(o,self) -- self相當於c++的this指標,但是這裡指代的是元類people而不是物件o

self.__index=self

o.name=n -- 用self代替o相當於c++中給靜態成員變數賦值

o.age=a

return o

end-- 基類元方法__tostring

function people:__tostring()

local sum="名字為:"..self.name.."\n年齡為:"..self.age -- 此處self指代的是實際呼叫時的物件

return sum

end-- 基類方法walk

function people:walk()

print("我正在走!")

end-- 建立物件

me=people:new(nil,"jaxes",21)

-- 呼叫物件中的函式

print(me) -- 等價於print(tostring(me))

me:walk() -- 等價於me.walk(me)

-- 類worker派生自people類

worker=people:new()

-- 派生類

function worker:new(o,n,a,id)

o=o or people:new(o,n,a)

setmetatable(o,self)

self.__index=self

o.id=id

return o

endfunction worker:__tostring()

local sum=people.__tostring(self)

sum=sum.."\nid為:"..self.id

return sum

endworker=worker:new(nil,"kaka",55,01)

print(worker)

worker:walk() -- 繼承自父類函式walk

這個部分暫時還不清楚怎麼搞,暫時做為後續儲備內容

lua學習筆記 六

建立協程,coroutine表中名為create的函式建立協程,返回值為thread型別 co coroutine.create function print hello end print co 檢視協程狀態 suspended running dead normal四種狀態 print coro...

Lua學習筆記六 package

lua和其他語言一樣,也有模組 包的概念,稍微有點不同的是,預設先從環境變數lua path中搜尋lua檔案,如果搜尋不到,則從lua cpath中搜尋c檔案。對於我來說,時而去改變環境變數,則顯得麻煩,並且在另外的環境中部署時還要修改環境變數,則顯得不人性化,因此,覺得如下方式增加搜尋路徑比較好 ...

Lua學習筆記六 package

lua和其他語言一樣,也有模組 包的概念,稍微有點不同的是,預設先從環境變數lua path中搜尋lua檔案,如果搜尋不到,則從lua cpath中搜尋c檔案。對於我來說,時而去改變環境變數,則顯得麻煩,並且在另外的環境中部署時還要修改環境變數,則顯得不人性化,因此,覺得如下方式增加搜尋路徑比較好 ...