Lua 函式冒號 點 self 的用法

2021-10-03 22:21:15 字數 1196 閱讀 5402

在理解到函式的用法,需要先理解幾個 lua中的"表"的功能。

語法:

myclass =

--使用冒號宣告函式

function myclass:

myfuna()

-- body

end--使用點宣告函式

function myclass.

myfunb()

-- body

endreturn

分析:

-- 定義函式

function myclass:

myfuna()

-- body

end-- 使用函式:

-- 情況一 用冒號使用函式 說明:傳遞乙個隱含引數 self 給函式

myclass:

myfuna()

-- 正確編譯

-- 情況二 用點使用函式 說明:沒有傳遞任何引數

-- 注意:若所定義的函式是使用冒號定義,並有使用到 self 關鍵字,此時使用點號(

.)使用函式,

-- 並不會傳遞隱含引數 self 給函式,會導致該函式識別不出 self 而導致如下的錯誤

-- error:attempt to index local 'self'

(a nil value)

myclass.

myfuna()

-- 編譯錯誤

-- 定義函式

function myclass.

mufuna()

-- body

end-- 使用函式

-- 情況一 用冒號使用函式 說明:傳遞乙個隱含引數 self 給函式

-- 因為函式在定義時不是使用冒號定義,也不能使用關鍵字 self 去使用資料,所以傳遞的隱含引數並不會使用到。

myclass:

myfuna()

-- 正確編譯

-- 情況二 使用點號使用函式 說明:沒有傳遞任何引數

myclass.

myfuna()

-- 正確編譯

注意:當我用冒號(:)使用函式時,所傳遞的隱含引數self 是放在引數列中的第乙個位置

ex : myclass:myfuna(a,b) >> 等同於 myclass:myfuna(self,a,b)

LUA中的冒號 點和self

在lua程式設計中,經常會看到有時用點號定義乙個table的成員函式,有時卻用冒號,在呼叫的時候也是如此。那麼點號和冒號在使用上有什麼區別呢?它們與self之間又是什麼樣的關係呢?稍安勿躁,接下來謎底將一一為你揭開。下面先看乙個例子 class class.index class function ...

lua中的點 冒號與self

lua程式設計中,經常遇到函式的定義和呼叫,有時候用點號呼叫,有時候用冒號呼叫,這裡簡單的說明一下原理。girl function girl.gotomarket girl somemoney girl.money girl.money somemoney endgirl.gotomarket gi...

Lua中的點 冒號與self

lua中的點 冒號與self,它們之間的關係主要體現在函式的定義與呼叫上,lua在函式定義時可以用點也可以用冒號,如 function mytable.fun p return p endfunction mytable fun p return p end用冒號定義的函式有個特別的地方是它內部有個...