原文:
在lua開發中我們經常會混淆這兩者之間的區別,下面通過乙個示例來解釋:
class = {}
class.__index = class
function
class.new
(x,y)
local cls = {}
setmetatable(cls, class)
cls.x = x
cls.y = y
return cls
endfunction
class:test
()-- 等價於
-- function class.test(self)
print(self.x,self.y)
endobject = class.new(10,20)
object:test()
-- 等價於
object.test(object)
可以看到:
1、定義的時候:class:test()與 class.test(self)是等價的,點號(.)要達到冒號(:)的效果要加乙個self引數到第乙個引數;
2、呼叫的時候:object:test() 與object.test(object)等價,點號(.)要新增物件自身到第乙個引數。
總結:可以把點號(.)作為靜態方法來看待,冒號(:)作為成員方法來看待。
lua 中點號與冒號的區別
曾經遇到面試題目,面試官給的題目大概是這樣,a 是乙個table 請你說出a.foo 與a foo 的區別。我也只能呵呵了,因為我根本就不會。因為工作中對lua 根本就是看看 就開始埋頭敲 了。看下面 a function a inscrease self.count self.count 1 en...
Lua點號和冒號區別
點號和冒號的區別 定義和呼叫時 第乙個引數是否有隱藏引數self 點號 第乙個引數無隱藏引數self 冒號 第乙個引數有隱藏引數self eg local test local test function test func arg1,arg2 print arg1,arg2,self endfun...
lua 點號,冒號,self
1 self類似c 中的this指標,指向當前正在使用這個table的例項 2 點號就是基本的table索引的方式 3 冒號,記住一點就是省略self這個引數的作用,無論是在定義函式,還是在呼叫函式都是這個作用。冒號只能用於函式呼叫和定義,不能用於其他的情況 local mt mt.num 100 ...