lua 中的点、冒号与self
【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的更多相关文章
- Lua中的点、冒号与self
		
Lua中的点.冒号与self,它们之间的关系主要体现在函数的定义与调用上,Lua在函数定义时可以用点也可以用冒号,如: function mytable.fun(p) return p end fun ...
 - lua中的面向对象编程
		
简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 上述代码会输出tb1 ~= tb2.说明两个具有相同值得对象是两个不同的对象,同时在Lua中table是引用类型的 ...
 - Lua中的一些库(1)
		
[数学库] 数学库(math)由一组标准的数学函数构成.这里主要介绍几个常用的函数,其它的大家可以自行百度解决. 三角函数(sin,cos,tan……)所有的三角函数都使用弧度单位,可以用函数deg( ...
 - 理解lua中 .  :  self
		
前言 在LUA中,经常可以看到:. self,如果你学习过Java或C#语言,可以这样理解 .对于c#和java的静态方法 :相当于是实例方法 今天在CSDN上看到一篇博客写的很清楚,转载过来 原文出 ...
 - Lua中“.”调用方法与“:”调用方法的区别
		
Lua中“.”调用方法与“:”调用方法的区别: ...
 - 【转载】Lua中实现类的原理
		
原文地址 http://wuzhiwei.net/lua_make_class/ 不错,将metatable讲的很透彻,我终于懂了. --------------------------------- ...
 - Unity3D热更新之LuaFramework篇[05]--Lua脚本调用c#以及如何在Lua中使用Dotween
		
在上一篇文章 Unity3D热更新之LuaFramework篇[04]--自定义UI监听方法 中,我对LuaBehaviour脚本进行了扩展,添加了两个新的UI监听方法,也提到最好能单写一个脚本处理此 ...
 - Lua中的面向对象编程详解
		
简单说说Lua中的面向对象 Lua中的table就是一种对象,看以下一段简单的代码: 复制代码代码如下: local tb1 = {a = 1, b = 2}local tb2 = {a = 1, b ...
 - lua中基类和“继承机制”
		
基类:基类定义了所有对于派生类来说普通的属性和方法,派生类从基类继承所需的属性和方法,且在派生类中增加新的属性和方法. 继承:继承是C++语言的一种重要机制,它允许在已定义的类的基础上产生新类. lu ...
 
随机推荐
- Android应用程序如何调用shell脚本(一)
			
转自: Android应用程序如何调用shell脚本(一) 一般来说, Android 下的应用程序可以“直接”得到的最大的权限为 system ,但是如果我们需要在程序中执行某些需要 root 权限 ...
 - TraceView 使用详解 android eclipse
			
先看命令 (配置好环境变量的情况下,直接traceview+空格+ trace文件路径即可): TraceView是什么 Traceview是android平台配备一个很好的性能分析的工具.它可以通过 ...
 - 【Servlet和JSP-学习-1】基础知识
			
Servlet Session管理 Cookie 获取指定名称的Cookie 删除指定名称的Cookie JSP EL表达式 示例: 后台存入request中的属性值: JSP界面 JSTL 来自为知 ...
 - ASP.NET Web Pages:全局页面
			
ylbtech-.Net-ASP.NET Web Pages:全局页面 1.返回顶部 1. ASP.NET Web Pages - 全局页面 本章介绍全局页面 AppStart 和 PageStart ...
 - [转]Serv-U 配置
 - Linux设置history命令显示时间
			
效果如图: 设置方法如下: vim /etc/bashrc #command-->history set HISTFILESIZE=2000 #保存命令的总数默认总数为1000 HISTSIZE ...
 - Linux性能分析 vmstat基本语法
			
vmstat vmstat 统计虚拟内存信息,可以对操作系统的proc.memory.CPU.IO等信息进行统计以呈现给用户. 根据操作系统的不同,vmstat的输出结果会有不同.大家可 ...
 - mysql设置索引
			
1.添加PRIMARY KEY(主键索引) 语法:ALTER TABLE `表名` ADD PRIMARY KEY ( `列名称` ) mysql>ALTER TABLE `table_name ...
 - Web 下载图片为空
			
问题描述: 文件下载功能是web开发中经常使用到的功能,使用HttpServletResponse对象就可以实现文件的下载.但是下载任务正常进行,下载下来的图片却是空 问题代码: //从服务器下载一张 ...
 - Mac上如何用命令修改文件内容
			
首先打开iTerm,切到文件所在的文件夹目录下 cd xx 然后进入编辑模式 vim xx.xx 然后插入修改 shift + i 修改之后退出插入模式 esc 保存退出 shift + : wq