lua 點號,冒號,self

2021-08-28 02:09:51 字數 833 閱讀 8816

1:self類似c++中的this指標,指向當前正在使用這個table的例項

2:」.」點號就是基本的table索引的方式

3:」:」冒號,記住一點就是省略self這個引數的作用,無論是在定義函式,還是在呼叫函式都是這個作用。冒號只能用於函式呼叫和定義,不能用於其他的情況

local mt = {}

mt.num = 100

function mt.add_num(n)

mt.num = mt.num + n

endfunction mt.sub_num(n)

self.num = self.num - n

endfunction mt:mul_num(n)

self.num = self.num * n

endfunction mt.div_num(self, n)

self.num = self.num / n

endmt.add_num(100)

print(mt.num)

--以下呼叫出錯,因為沒有全域性self值

--mt.sub_num(40)

--print(mt.num)

-- mt.mul_num(10) will be wrong

mt.mul_num(mt, 10)

mt:mul_num(10)

print(mt.num)

-- mt.div_num(20) will be wrong

mt.div_num(mt, 10)

mt:div_num(10)

print(mt.num)

return mt

Lua點號和冒號區別

點號和冒號的區別 定義和呼叫時 第乙個引數是否有隱藏引數self 點號 第乙個引數無隱藏引數self 冒號 第乙個引數有隱藏引數self eg local test local test function test func arg1,arg2 print arg1,arg2,self endfun...

lua 中點號與冒號的區別

曾經遇到面試題目,面試官給的題目大概是這樣,a 是乙個table 請你說出a.foo 與a foo 的區別。我也只能呵呵了,因為我根本就不會。因為工作中對lua 根本就是看看 就開始埋頭敲 了。看下面 a function a inscrease self.count self.count 1 en...

lua中冒號 與點號 的區別

原文 在lua開發中我們經常會混淆這兩者之間的區別,下面通過乙個示例來解釋 class class.index class function class.new x,y local cls setmetatable cls,class cls.x x cls.y y return cls endfu...