返回介绍

点号与冒号操作符的区别

发布于 2019-08-25 05:47:46 字数 1076 浏览 946 评论 0 收藏 0

看下面示例代码:

local str = "abcde"
print("case 1:", str:sub(1, 2))
print("case 2:", str.sub(str, 1, 2))

执行结果:

case 1: ab
case 2: ab

冒号操作会带入一个 self 参数,用来代表 自己。而点号操作,只是 内容 的展开。

在函数定义时,使用冒号将默认接收一个 self 参数,而使用点号则需要显式传入 self 参数。

示例代码:

obj = { x = 20 }

function obj:fun1()
    print(self.x)
end

等价于

obj = { x = 20 }

function obj.fun1(self)
    print(self.x)
end

参见 官方文档 中的以下片段:


The colon syntax is used for defining methods, that is, functions that
have an implicit extra parameter self. Thus, the statement

     function t.a.b.c:f (params) body end

is syntactic sugar for

     t.a.b.c.f = function (self, params) body end

冒号的操作,只有当变量是类对象时才需要。有关如何使用 Lua 构造类,大家可参考相关章节。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文