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,而这正是我们得到的。

更新于: 2021 年 7 月 20 日

5K+ 次浏览

开始你的职业

通过完成课程取得认证

开始
广告
© . All rights reserved.