为了账号安全,请及时绑定邮箱和手机立即绑定

之间的区别。和:在Lua

之间的区别。和:在Lua

一只名叫tom的猫 2019-12-11 12:09:16
我对通过.和通过函数调用之间的区别感到困惑:> x = {foo = function(a,b) return a end, bar = function(a,b) return b end, }> return x.foo(3,4)3> return x.bar(3,4)4> return x:foo(3,4)table: 0x10a120> return x:bar(3,4)3在:做什么?
查看完整描述

3 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

冒号用于实现self作为第一个参数传递的方法。因此x:bar(3,4)应与相同x.bar(x,3,4)。

查看完整回答
反对 回复 2019-12-12
?
眼眸繁星

TA贡献1873条经验 获得超9个赞

对于定义,它与手动指定self 完全相同 -甚至在编译时会产生相同的字节码。即function object:method(arg1, arg2)与相同function object.method(self, arg1, arg2)。


关于使用:是几乎一样的.-一种特殊的调用将在内部使用,以确保object的计算/接入和任何可能的副作用是只有一次计算。呼叫object:method(arg1, arg2)与相同object.method(object, arg1, arg2)。



查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 268 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信