美文网首页
Lua中调用函数使用点号和冒号的区别

Lua中调用函数使用点号和冒号的区别

作者: 钟离惜 | 来源:发表于2020-09-01 17:38 被阅读0次

冒号操作会带入一个 self 参数作为第一个参数,用来代表调用的table本身。
在函数定义时,使用冒号将默认接收一个 self参数,而使用点号则需要显式传入 self 参数。

TSprite = {
    x = 0,
    y = 0,
}
function TSprite.setPosition(x, y)
    TSprite.x = x;
    TSprite.y = y;
end

TSprite.setPosition(1, 2);
print("TSprite坐标(" .. TSprite.x .. "," .. TSprite.y .. ")");
local who = TSprite;
TSprite = nil;
who.setPosition(1, 2);

这么做一定会报错,虽然通过who确实可以成功调用setPosition函数,但函数里需要用到TSprite,而此时的TSprite已经为nil了。

TSprite = {
    x = 0,
    y = 0,
}
function TSprite.setPosition(self, x, y)
    self.x = x;
    self.y = y;
end

local who = TSprite;
TSprite = nil;

who.setPosition(who, 1, 2);
print("TSprite坐标(" .. who.x .. "," .. who.y .. ")");

留意setPosition的第一个参数,我们强制要求传入一个参数,这个参数就是TSprite本身。
于是,在调用setPosition函数时,传入whowho的内容就是TSprite的内容,于是,setPosition就能正常执行了。

TSprite = {
    x = 0,
    y = 0,
}
function TSprite:setPosition(x, y)
    self.x = x;
    self.y = y;
end
local who = TSprite;
TSprite = nil;

who:setPosition(1, 2);

冒号的作用就是:定义函数时,给函数的添加隐藏的第一个参数self,调用函数时,默认把当前调用者作为第一个参数传递进去。
使用了冒号之后,就相当于我们刚刚使用点号时第一个参数为self一样,只是我们不再需要显式地定义self参数以及主动地传递who参数。

转载文章
Lua中调用函数使用点号和冒号的区别
Lua点与冒号的区别

相关文章

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

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

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

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

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

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

  • cocos2d-lua开发(1)

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

  • Lua中调用函数使用点号和冒号的区别

    冒号操作会带入一个 self 参数作为第一个参数,用来代表调用的table本身。在函数定义时,使用冒号将默认接收一...

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

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

  • LUA .和:的区别

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

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

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

  • Lua点与冒号的区别

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

  • Lua中的self

    Lua中可以使用“:”和“.”来定义、调用函数,区别是: 使用“:”定义的函数,默认接收第一个参数为self; 使...

网友评论

      本文标题:Lua中调用函数使用点号和冒号的区别

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