lua 中的点、冒号与self

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

  girl = {money = 200}
  function girl.goToMarket(girl ,someMoney)
girl.money = girl.money - someMoney
  end
  girl.goToMarket(girl ,100)
  print(girl.money)

  上面进行了方法的点号定义和点号调用。

  boy = {money = 200}
  function boy:goToMarket(someMoney)
   self.money = self.money - someMoney
  end
  boy:goToMarket(100)
  print(boy.money)

  上面进行了冒号定义和冒号调用。

  以上的打印结果都是100。

  可以看出,冒号定义和冒号调用其实跟上面的效果一样,只是把第一个隐藏参数省略了,而该参数self指向调用者自身
  我们也可以点号定义冒号调用,或者冒号定义点号调用
  如:

  boy = {money = 200}
  function boy.goToMarket(self ,someMoney)
   self.money = self.money - someMoney
  end
  boy:goToMarket(100)
  print(boy.money) 参考:总结:冒号只是起了省略第一个参数self的作用,该self指向调用者本身,并没有其他特殊的地方。

lua 中的点、冒号与self的更多相关文章

  1. Lua中的点、冒号与self

    Lua中的点.冒号与self,它们之间的关系主要体现在函数的定义与调用上,Lua在函数定义时可以用点也可以用冒号,如: function mytable.fun(p) return p end fun ...

  2. lua中的面向对象编程

    简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 上述代码会输出tb1 ~= tb2.说明两个具有相同值得对象是两个不同的对象,同时在Lua中table是引用类型的 ...

  3. Lua中的一些库(1)

    [数学库] 数学库(math)由一组标准的数学函数构成.这里主要介绍几个常用的函数,其它的大家可以自行百度解决. 三角函数(sin,cos,tan……)所有的三角函数都使用弧度单位,可以用函数deg( ...

  4. 理解lua中 . : self

    前言 在LUA中,经常可以看到:. self,如果你学习过Java或C#语言,可以这样理解 .对于c#和java的静态方法 :相当于是实例方法 今天在CSDN上看到一篇博客写的很清楚,转载过来 原文出 ...

  5. Lua中“.”调用方法与“:”调用方法的区别

    Lua中“.”调用方法与“:”调用方法的区别:                                                                             ...

  6. 【转载】Lua中实现类的原理

    原文地址 http://wuzhiwei.net/lua_make_class/ 不错,将metatable讲的很透彻,我终于懂了. --------------------------------- ...

  7. Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween

    在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...

  8. Lua中的面向对象编程详解

    简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 复制代码代码如下: local tb1 = {a = 1, b = 2}local tb2 = {a = 1, b ...

  9. lua中基类和“继承机制”

    基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lu ...

随机推荐

  1. 知识点查缺补漏贴02:Linux环境fork()函数详解

    引言 先来看一段代码吧, #include <sys/types.h> #include <unistd.h> #include <stdio.h> #includ ...

  2. 实验二:C基本数据类型及运算

    2.1  建议使用double型 #include<stdio.h> int main(){ double x,y,z,s,p,a; scanf("%lf%lf%lf" ...

  3. TraceLog.cs 累积 C#

    using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Dia ...

  4. IntelliJ IDEA 创建Web项目

    1:创建Project:依次点击File–new Project: 2:选择Empty Project项目,点击Next: 3:输入项目名称,选择项目路径: 4:创建Module:点击Finish,弹 ...

  5. 3dsMax模型转UE4

    转自:http://blog.csdn.net/qq_24835213/article/details/68063344 一.模型设置: 1.将Vary材质转成标准材质 2.将模型减面 3.加一套UV ...

  6. Android RILD运行机制详解

    前言 在上一篇文章里(http://blog.csdn.net/jason_wzn/article/details/53232022),简要介绍了Android RIL的架构.这一篇文章,就来看一看R ...

  7. Eclipse变量名自动补全问题 自定义上屏按键为TAB

    Eclipse空格等号等都可以上屏,这样有时候输入变量名再按空格就会自动补全,非常讨厌.那么怎么办呢? 1.首先你的Eclipse需要装有 Eclipse plug-in development en ...

  8. 讨论Android开发中的MVC设计思想

    最近闲着没事,总是想想做点什么.在时间空余之时给大家说说MVC设计思想在Android开发中的运用吧! MVC设计思想在Android开发中一直都是一套比较好的设计思想.很多APP的设计都是使用这套方 ...

  9. C# DbHelperSQL 类,从东软生成器提取而来

    DBHelerSQL,可以结合东软生成器写简单三层结构,也可以自己去调用执行相关SQL语句 直接上代码: using System; using System.Collections; using S ...

  10. 数据库之SQL笛卡尔积

    1.笛卡尔积定义 笛卡尔积在SQL中的实现方式既是交叉连接(Cross Join).所有连接方式都会先生成临时笛卡尔积表,笛卡尔积是关系代数里的一个概念,表示两个表中的每一行数据任意组合,上图中两个表 ...