luaのポイントとコロンの定義方法と呼び出し方法の違い

994 ワード


local a = {x=2}

--[[function a.foo1(b)
    self.x = b
end
a.foo1(5)
print(a.x)  --  :attempt to index global 'self' (a nil value)]]

--[[function a.foo2(self,b)  --       
    self.x = b
end
a.foo2(a,5)   --       
print(a.x)  --   5]]


--[[function a.foo3(self,b)  --       
    self.x=b
end
a:foo3(6)   --       
print(a.x)   --  6]]


--[[function a:foo4(b)  --       
    self.x=b
end
a.foo4(a,7)   --     
print(a.x)  --   7]]


--[[function a:foo5(b)  --        
    self.x=b
end
a:foo5(8)  --       
print(a.x)   --    8]]


function a:foo6(self,b) --           self  
    self.x =b
end
a:foo6(8) --  
a:foo6(a,8) --   
print(a.x)


--       :     ,              self(       self     );
--     ,                   

.......

--       ,               ,
--             self               (   )
t={x=1}

function t.foo(a)
    print(a.x)
end

local a = {x=2}

print(t.foo(a)) --  2

--print(t:foo()) --  1
--print(t:foo(a)) --  1