xlua学習の道(三)Luaオブジェクト向け

1903 ワード

単純なインスタンス
【lua作成オブジェクト】もし私たちが一人いたら、この人の名前は張三、年齢18、luaの中で私たちはこのように実現することができます.
person={name="  ",age=18}

それでは今私达はまた人が来て、名前は李四で、年齢は22で、そこで私达はまた1回书いて、このようにします
person2={name="  ",age=22}

もし私たちが100人いたら、1000人は煩わしいので、テンプレートPersonを書いて、彼にオブジェクトを作成する方法を書くことができます.
Person={name="",age=1}
function Person.new(self,name,age)
            t={}
            setmetatable(t,{__index=self})
            t.name=name
            t.age=age
            return t
end

person=Person.new(Person,"  ",18)
person2=Person.new(Person,"  ",22)

しかし、このように毎回私たちは自分を伝えなければならないのも面倒で、lua言語は私たちに文法の砂糖を提供して、私たちは:代替することができます.呼び出し方法、使用:selfを自動的に転送します
Person={name="",age=1}
function Person:new(name,age)
            t={}
            setmetatable(t,{__index=self})
            t.name=name
            t.age=age
            return t
end

person=Person:new("  ",18)
person2=Person:new("  ",22)

luaメソッドはリロードをサポートしており、多くのnewメソッドを書くことができます.これはc#の構造メソッド【lua継承】に似ています.
person={name="",age=1}   --   
function person:new()         --   c#       
	t={}                                   --      
	setmetatable(t,{__index=self})    --    ,   __index    
	return t                             --          
	end

function person:new(name,age)    --  
	t={}                         
	setmetatable(t,self)                   --        ,         self     t    
	self.__index=self                       --self __index    
	t.name=name                            
	t.age=age
	return t
	end

father=person:new()                 --    
function father:learn()               --        learn    
	print(self.name.."  ")
	end

son=father:new("  ",23)       --       
son:learn()                               --        learn  ,