魏长东

weichangdong

东邪

lua中 点(.)和冒号(:)的区别

local class = {}  
  
function class:new(x, y)  
    local mt = {}  
    mt.x = x   
    mt.y = y   
    self.__index = self  
    setmetatable(mt, self)  
    return mt   
end  
  
-- 等效 function class.printf(self)  
function class:printf()  
    print(self.x ,self.y)  
end  
  
different = class:new(1,2)  
  
-- different.printf()   这个不对  函数内找不到self  
-- different:printf()   --正确  默认形参是self  
different.printf(different)  --正确   没有默认形参 需手动添加在函数中需要用到的参数  
  
--规则: 在使用的时候 属性用点 函数用冒号可以避免混乱