美文网首页
lua 中 . 和 : 的区别

lua 中 . 和 : 的区别

作者: 忆中异 | 来源:发表于2022-05-18 15:00 被阅读0次

lua 中 . 和 : 的区别
首先在lua中使用“:”定义的函数会自动传入一个名为self的变量,这个变量是隐含的,self同c++中的this一样,

  function  class:func2( )  end
  function  class.func1(self)  end
  --这时候这两个函数等价
function MainScene:ctor()
    self:ceshi(1,2,3)
end
function MainScene:ceshi(a,b,c)
    print(a,b,c)
end
输出:1 2 3

分析:默认传self,默认接受self。

function MainScene:ctor()
    self:ceshi(1,2,3)
end
function MainScene.ceshi(a,b,c)  --注意是.
    print(a,b,c)
end
输出:userdata 1 2

分析:调用ceshi函数时用的:默认传递self为第一个参数,但是函数声明的时候用的 . 所以不会有默认隐藏的self去接收,此时传递参数为 self 1 2 3 但是ceshi函数只接收3个参数所以3被抛弃。

function MainScene:ctor()
    self.ceshi(1,2,3)  --注意是.
end
function MainScene.ceshi(a,b,c)  --注意是.
    print(a,b,c)
end
输出:1 2 3

分析:默认不传递self,默认不接受self

function MainScene:ctor()
    self.ceshi(1,2,3) --注意是.
end
 
function MainScene:ceshi(a,b,c)
    print(self)
    print(a,b,c)
end
输出:1
     2 3 nil

分析:函数调用时用的 . 不会传递self 只传递1 2 3,而ceshi函数声明时用的 : 默认有一个self在第一位去接收,ceshi函数能接收4个参数,即 self a b c ,所以c没有接收参数为nil。
在lua中模拟面向对象编程中,可以用 . 来表示类方法,而 : 可以用来表示成员方法。

相关文章

  • lua 中 . 和 : 的区别

    lua 中 . 和 : 的区别首先在lua中使用“:”定义的函数会自动传入一个名为self的变量,这个变量是隐含的...

  • Lua_for循环语句

    lua中的各种for循环语句:在Lua中for语句跟其他语言的for类似,语法上有一点点区别。Lua的for语句有...

  • LUA .和:的区别

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

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

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

  • Lua和Luajit的区别

    LuaJIT是采用C语言写的Lua的解释器。LuaJIT被设计成全兼容标准Lua 5.1, 因此LuaJIT代码的...

  • Lua中的self

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

  • Lua中的self

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

  • Lua基础知识(二)

    Lua中的面向对象 1.Lua中类的原理 Lua中没有类的概念,类是一个属性和方法的集合,而方法都是由方法名和方法...

  • Lua 逗号和点号的区别

    测试代码 (一) 把这段代码运行到测试地址进行测试,得到如图所示的结果 测试代码(二) test:func(1,2...

  • Lua type和typeof区别

    type 是lua内置的函数,用来获取类型typeof 是一个自定义的函数,为了用来获取cs的类型 代码和输入如下:

网友评论

      本文标题:lua 中 . 和 : 的区别

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