当前位置 往事如风 OpenResty 正文 下一篇:

[openresty学习之十三]点号和冒号的区别

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

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 参数。

obj = { x = 20 }

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

等价于:

obj = { x = 20 }

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

冒号的操作,只有当变量是类对象时才需要。

参考文献

OpenResty最佳实践
OpenResty从入门到实战

本文来自网络,不代表往事如风立场,转载请注明出处:https://www.pastlikewind.com/2019/08/29/700/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部