美文网首页
Lua练习16-冒号和点号

Lua练习16-冒号和点号

作者: GameObjectLgy | 来源:发表于2022-01-10 16:42 被阅读0次
local Animal = {}

function Animal:Eat( food )
    print("Animal:Eat", self, food)
end

function Animal.Sleep( time )
    print("Animal.Sleep", self, time)
end

Animal:Eat("grass")
Animal.Eat("grass")
Animal:Sleep(1)
Animal.Sleep(1)

在编辑器中可见,可以看到sleep函数的self下方是有波浪线的。
解析:
1、Animal:Eat("grass")的结果:
Animal:Eat table: 0x7f8421c07540 grass
说明调用时,将自身Animal 这个表作为self传递了进去。
2、Animal.Eat("grass")的结果:
Animal:Eat table: 0x7f8421c07540 grass
用不同调用方式调用了Animal的Eat("grass"),但是却得到一样的输出结果,说明在Eat(冒号函数)内部有一个参数self,因为Eat方法在定义的时候写了冒号,后面不管怎么调用,都会有一个默认参数内部self,而且这个self就是自己本身这个对象。

3、Animal:Sleep(1)的结果:
Animal.Sleep nil table: 0x7f8421c07540
4、Animal.Sleep(Animal)的结果:
Animal.Sleep nil table: 0x7f8421c07540
可以看到,不管用什么方式去调用Sleep方法,结果都是一样的,因为Sleep在定义的时候用的是点号,内部没有参数self。

-- 我们为什么可以用.和:来定义函数
function Animal.Sleep( time ) end
-- 这种写法是一种语法糖(syntactic sugar),它的原型是:
Animal.Sleep = function ( time ) end

用双冒号(:)时,也是一种语法糖,实际上默认传递一个self(Animal)参数:
function Animal:Eat( food ) end
等价于
function Animal.Eat( self, food ) end

参考:https://www.cnblogs.com/zzya/p/5778119.html

相关文章

  • Lua练习16-冒号和点号

    在编辑器中可见,可以看到sleep函数的self下方是有波浪线的。解析:1、Animal:Eat("grass")...

  • 9、lua中的self,点号,冒号的关系

    lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用。 点号定义、点号调用 冒号定义、冒号调...

  • cocos2d-lua开发(1)

    lua语法小结: 点号冒号的区别:点号语法中一般用于类属性的调用(包括方法)。lua中方法调用用 冒号 变量:一个...

  • 热更新05_方法中点和冒号Day1129

    lua编程中,函数的定义和调用 1.用点号调用2.冒号调用 方法的点号定义和点号调用 girl = {money...

  • Lua-冒号点号

    简介 关于冒号(:)与点号(.) 冒号自带隐藏self,点号不带self,方法用冒号 示例

  • 理解lua 语言中的点、冒号与self

    lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用。 可以看出,这里进行了方法的点号定义和...

  • Lua中冒号(":")和点号(".")的区别

    一、定义方法的区别 (1)冒号定义——默认会接受self参数 (2)点号定义——默认不会接受self参数 二、调用...

  • 理解Lua 语言中的点、冒号与self

    Lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用其实用“.”或者用“:”都是可以的,区别...

  • Lua点与冒号的区别

    Lua方法调用. : 方法的使用 冒号操作会带入一个 self 参数,用来代表 自己。而点号操作,只是 内容 的展...

  • LUA .和:的区别

    lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理。 girl={...

网友评论

      本文标题:Lua练习16-冒号和点号

      本文链接:https://www.haomeiwen.com/subject/rhkiyktx.html