lua中冒號 與點號 的區別

2021-07-30 19:01:43 字數 783 閱讀 7096

原文:

在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 ...