当前位置:必发365电子游戏 > 编程 > 必发365唯一官网可以把点号(.)作为静态方法来看待,经常遇到函数的定义和调用
必发365唯一官网可以把点号(.)作为静态方法来看待,经常遇到函数的定义和调用
2019-12-19

前言

在LUA中,通常能够看见:. self,前几日在CSDN上见到一篇博客写的很明亮,转发过来

原稿出处:

 

lua编制程序中,平常境遇函数的概念和调用,一时候用点号调用,有的时候候用冒号调用,这里差十分少的求证一下准绳。

--冒号:在概念时简短了self
必发365唯一官网,--点号:在概念时不省略self

点号(.卡塔尔定义和调用

girl={money=200}

function girl.goToMarket(girl,someMoney)

    girl.money= girl.money -someMoney

end

 

girl.goToMarket(girl,100)

print(girl.money)

能够看见,这里张开了点子的点号定义和点号调用。

Class = {}
Class.__index = Class

function Class.new(x,y)
    local cls = {}
    setmetatable(cls, Class)
    cls.x = x
    cls.y = y
    return cls
end
function Class:test()
-- 等价于
-- function Class.test(self)
    print(self.x,self.y)
end


object = Class.new(10,20)

object:test()
-- 等价于
object.test(object)

冒号(:卡塔尔定义和冒号调用

boy={money=200}

function boy:goToMarket(someMoney)

    self.money = self.money -someMoney

end

boy:goToMarket(100) -- 注意这里的boy:goToMarket(100) -> boy.goToMarket(self,100)

print(boy.money)

此处开展了冒号定义和冒号调用。

能够把点号(.卡塔尔国作为静态方法来对待,冒号(:卡塔尔国作为成员方法来对待

运作结果

如上的打字与印刷结果都是100。

必发365唯一官网可以把点号(.)作为静态方法来看待,经常遇到函数的定义和调用。能够看看,冒号定义和冒号调用其实跟上边的功效等同。把第叁个暗藏参数省略了,而该参数self指向调用者本身

 

function CreateStudent(ID,Name)  
   local Obj={id=ID,name=Name};  
    function Obj:GetID()  
       return self.id;  
    end   
    function Obj.GetName(self)  
       return self.name;  
    end   
    function Obj:SetID(ID)  
       self.id=ID;  
    end   
    Obj.SetName=function(self,Name)  
    self.name=Name  
    end   
    return Obj;  
end  

s1=CreateStudent(1,"andy");  
print("s1'id=",s1:GetID(),"s1'name=",s1.GetName(s1))  

s1:SetID(2);  
s1.SetName(s1,"lili");  
print("s1'id=",s1:GetID(),"s1'name=",s1:GetName()) 

相互调用

自然了,大家也可以点号定义冒号调用,或许冒号定义点号调用如:

man={money=200}

function man.goToMarket(self,someMoney)

    self.money = self.money -someMoney

end

man:goToMarket(100) -- 注意这里man:goToMarket(100) ->man.goToMarket(self,100)

print(man.money)

相互调用运维结果

必发365唯一官网 1

 

总结

冒号只是起了简单第3个参数self的功效,该self指向调用者本身,并从未别的特别的地点。

上一篇:没有了