文章目录[点击展开](?)[+]

  1. 前言
  2. 点号定义和调用
  3. 冒号定义和冒号调用
  4. 运行结果
  5. 相互调用
  6. 相互调用运行结果
  7. 总结

前言

在LUA中,经常可以看到:. self,今天在CSDN上看到一篇博客写的很清楚,转载过来

原文出处:http://blog.csdn.net/wangbin_jxust/article/details/12170233

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) -- 注意这里的boy:goToMarket(100) -> boy.goToMarket(self,100)
print(boy.money)

这里进行了冒号定义和冒号调用。

运行结果

以上的打印结果都是100。

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

相互调用

当然了,我们也可以点号定义冒号调用,或者冒号定义点号调用如:

man={money=200}
function man.goToMarket(self,someMoney)
    self.money = self.money -someMoney
end
man:goToMarket(100) -- 注意这里man:goToMarket(100) ->man.goToMarket(self,100)
print(man.money)

相互调用运行结果

总结

冒号只是起了省略第一个参数self的作用,该self指向调用者本身,并没有其他特殊的地方。

本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/3912782.html,如需转载请自行联系原作者

理解lua中 . : self相关推荐

  1. 两个函数彻底理解Lua中的闭包

    本文通过两个函数彻底搞懂Lua中的闭包,相信看完这两个函数,应该能理解什么是Lua闭包.废话不多说,上 code: 1 --[[************************************ ...

  2. 理解lua中的metatable和__index

    Lua 学习笔记--metatable和__index 版权声明:本文为博主 Fisher1006 原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:ht ...

  3. 关于lua中userdata的理解

    @[TOC] 关于lua中userdata的理解 关于Userdata的理解 Userdata数据结构 userdata是用来存放用户自定义数据结构的实列,userdata的类型有两种类型,分别是li ...

  4. 对Lua中Userdata的理解

    目录 一.概述 二.源码实现 相关函数实现 1,lua_pushlightuserdata 2,lua_newuserdata 3,luaC_newobj(lgc.c) 4,createstrobj( ...

  5. 简单介绍Lua中三种循环语句的使用

    今天小编就为大家分享一篇关于Lua中三种循环语句的使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Lua的循环和C语言的循环的语法其实差不多,所以, ...

  6. Lua中的模块与module函数详解

    很快就要开始介绍Lua里的"面向对象"了,在此之前,我们先来了解一下Lua的模块. 1.编写一个简单的模块 Lua的模块是什么东西呢?通常我们可以理解为是一个table,这个tab ...

  7. 理解 Lua 的那些坑爹特性

    Lua 那些坑爹的特性 来源 https://blog.lilydjwg.me/2012/12/29/lua-caveats.36879.html 协程只能在 Lua 代码中使用 协程(corouti ...

  8. 理解分布式系统中的缓存架构(上)

    本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景. 1. 缓存概述 缓存概述 2. 缓存的分类 缓存主要分为以下四类 缓存的分类 2.1 CDN缓存 基本介绍 CDN(Conte ...

  9. 深入理解 Lua 虚拟机

    作者:nicochen,腾讯 IEG 游戏开发工程师 本文从一个简单示例入手,详细讲解 Lua 字节码文件的存储结构及各字段含义,进而引出 Lua 虚拟机指令集和运行时的核心数据结构 Lua Stat ...

最新文章

  1. ABAP:Read_Text(SAVE_TEXT)函数的使用方法
  2. 我的世界java版移除猪灵了吗_我的世界:激怒僵尸猪灵有奖励,用菌光体堆肥,修复126个漏洞!...
  3. 【Python】logging内置模块基本使用
  4. 倒计时1天,BDTC2016最新完整版日程公布
  5. 1、Flutter Widget(IOS Style) - CupertinoApp;
  6. c语言图像处理毕业设计,基于matlab数字图像处理毕业设计论文.doc
  7. 适用于物联网数据共享的区块链节点存储优化方案
  8. 2018CVPR:Non-local Neural Networks(自注意力机制捕获远程依赖)
  9. 【解决】nacos Ignore the empty nacos configuration and get it based on dataId
  10. DAVE笔记--Micrium uc-Probo Oscilloscope调试
  11. 【自然语言处理】【聚类】ECIC:通过迭代分类增强短文本聚类
  12. not annotated with HTTP method type (ex. GET, POST) 问题解决
  13. 安卓广告机带4G一体开发
  14. Qt例程-Qt中使用CAD插件
  15. 高级验证方法学()-Mentor-笔记
  16. C4D演绎中国风设计这波电商BANNER背景素材,高级了
  17. 【灰色逆袭秋冬土豪金退位】
  18. SAP中使用LSMW批量导入总账科目
  19. Capacitor 新一代混合应用“神器” 会代替Cordova吗??
  20. 快速查询出物流信息,统计已签收/未签收各多少

热门文章

  1. matlab 打开软件报错,matlab程序错误,提示如下【弄了半夜还是不行】 - 数学 - 小木虫 - 学术 科研 互动社区...
  2. android 界面跳转封装,【Android】Fragment跳转系列
  3. c标签判断true false jsp_北京尚学堂卓越班252天[第042天]——Jsp
  4. boot lvm 分区_Linux如何在线对逻辑分区扩容
  5. 天津计算机的专科学校,天津市电子计算机职业中等专业学校
  6. 脉位调制解调 matlab,通信原理与matlab仿真v2 第五章 DBPSK调制解调器(1)
  7. mysql范式与反范式_MySQL 三种范式以及反范式 | 剑花烟雨江南
  8. php excelreader 中文,如何解决php excel reader导出excel中文乱码?
  9. vue怎么vw布局好用_vue cli3项目的pc自适应布局_vw
  10. linux 中断 进程,linux中断分上下部分原因