Lua 程式設計中 . 和 : 的區別
Lua 中的.(點)運算子用於呼叫物件的方法,這是一種在 Lua 中廣泛使用的運算子。
當希望將不可見引數傳遞給所呼叫物件的某個方法時,Lua 中會使用:(冒號)運算子。
我們考慮一個示例,其中將有一個物件,該物件中存在兩個函式,我們將嘗試訪問這些函式,首先利用點運算子,其次利用冒號運算子。
示例
請考慮以下所示示例 −
returnX = {foo = function(x,y) return x end, bar = function(x,y) return y end, } ans = returnX.foo(10,11) print(ans) ans = returnX.bar(10,11) print(ans)
在上述示例中,我們只使用了點運算子,foo 函式將返回傳遞給它的第一個引數,bar 函式將返回傳遞給它的第二個引數。
輸出
10 11
現在,讓我們像在前面的示例中那樣,使用冒號運算子而不是點運算子。
示例
請考慮以下所示示例 −
returnX = {foo = function(x,y) return x end, bar = function(x,y) return y end, } ans = returnX:foo(10,11) print(ans) ans = returnX:bar(10,11) print(ans)
輸出
table: 0x232c910 10
等等,為什麼輸出是地址和10。我來解釋一下,當我們使用冒號(:)運算子時,實際發生的情況是,而不是呼叫
ans = returnX:foo(10,11)
實際呼叫的內容是 −
ans = returnX.foo(returnX,10,11)
因此我們獲得了作為地址的輸出,所以,在第二種情況下,當我們呼叫returnX:bar(10,11)時,第二個引數將為 10,而這正是我們得到的。
廣告