lua類
類一般都有類名,屬性宣告,構造體,方法,屬性。下面用lua實現類的模擬,類的模擬有很多種,但是都必須用到__index
下面看看**吧
--宣告了類名還有屬性,並且給出了屬性的初始值。
class =
--這句是重定義元表的索引
class.__index = class
--構造體,構造體的名字是隨便起的,一般都叫名為 new()
function class:new(x,y)
--初始化self,如果沒有這句,那麼類所建立的物件改變,其他物件都會改變
local self = {}
--將self的元表設定為class
setmetatable(self, class)
--屬性值初始化
self.x = x
self.y = y
--返回自身
return self
end--這裡定義類的其他方法
function class:show()
print("x = " .. self.x .. " y = " .. self.y)
endfunction class:plus()
self.x = self.x + 10
self.y = self.y + 10
end-- 類的定義完畢,開始建立物件
--[[
local a = class:new(12,21)
a:show()
a:plus()
a:show()
local b = class:new(99,99)
b:show()
b:plus()
b:show()
--]]
--[[
2,繼承
lua之中沒有繼承的概念,但是可以模擬,
我們建立乙個新的類main,它是class類的子類,
包含其一切方法。
--]]
--宣告了新的屬性z
classto =
--設定型別是class
setmetatable(classto, class)
--還是和類定義一樣,表索引設定為自身
classto.__index = classto
--這裡是構造體,多加上了乙個新的引數
function classto:new(x,y,z)
--初始化物件自身
local self = {}
--將物件自身設定為父類,這個語句相當於其他語言的super
self = class:new(x,y)
--將物件自身元表設定為main類
setmetatable(self, classto)
--新的屬性初始化,如果沒有將會按照宣告=0
self.z = z
--返回自身
return self
end--定義乙個新的方法
function classto:go()
self.x = self.x + 100
end--重定義父類的方法
function classto:show()
print("x = " .. self.x .. " y = " .. self.y .. " z = " .. self.z)
end-- 然後建立物件
--[[
local c = classto:new(1,10,100)
c:show()
local d = classto:new(100, 10, 1)
d:go()
d:show()
d:plus()
d:show()
c:show()
--]]
--[[
3,多型
lua作為動態語言,支援多型是基本,但是物件?
馬上為您呈現
--]]
--在class中新定義的乙個函式getnum()
function class:getnum()
return 100
end--這裡會引用getnum()
function class:numtodoubled()
return self:getnum() * 2
end--在 classto 中重新定義了getnum()
function classto:getnum()
return 50
end-- 演示多型
local a = class:new(10, 20)
print(a:numtodoubled())
local b = classto:new(10, 50, 200)
print(b:numtodoubled())
print(a:numtodoubled())
--[[
呼叫lua類的屬性請使用點號,而呼叫其方法請使用冒號
--]]
Lua之模擬類與物件
lua中本身沒有 類與物件 的概念,但是可以使用lua語言將其模擬出來。1.table為引用型資料 需要明確的是,值型別變數判斷相同的條件是值 內容 相同,而引用型變數判斷相同的條件為位址相同。2.模擬過程 類的建立 a.類 初始化乙個table來模擬 b.欄位 將其定義在table的 中,可以賦予...
Lua中類的函式
對於lua中類的函式,這裡需要說明的是如下幾點 1.當你在寫類中的函式時,如果對函式新增了local 就會報如下錯誤 之所以會出現這樣的問題,在於根本就不能對類的方法單獨新增local。下面舉例說明 下面是乙個區域性函式。local function doa print 區域性函式 endtab 類...
lua中利用table表模擬switch
首先定義乙個表 switch 然後定義各個分支 switch 1 function end switch a function end 然後呼叫 switch var 記得後面的 不要忘記哦 o 我們這裡舉個簡單例子,把月份轉換成漢字形式 switch switch 1 function retur...