Lua中调用函数使用点号和冒号的区别
最简单的类
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 .. ")");
mSprite.setPosition
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 .. ")");
mSprite: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);
输出:
TSprite坐标(1,2)
冒号的作用就是:定义函数时,给函数的添加隐藏的第一个参数self;调用函数时,默认把当前调用者作为第一个参数传递进去。
使用了冒号之后,就相当于我们刚刚使用点号时一样,只是我们不再需要显式地定义self参数以及主动地传递who参数。