冒号的作用:
1、定义函数时,给函数添加隐藏的第一个参数 self
2、调用函数时,默认把当前调用者作为第一个参数传递进去

如 a:b(c) 可以理解为 a.b(a, c)

以下是用点号的定义和调用函数的方式:

 Song =
{
name = "",
timeLength = ,
} function Song.SetName(name)
Song.name = name;
end

以上的函数定义可以使可以,但是有一个很大的问题,思考10s为什么?

假如有以下逻辑:

 ChineseSong = Song;
Song = nil;
ChineseSong.SetName("化身孤岛的鲸");

赋值操作使两者指向了相同的内存地址。这样显然是编译通不过的,因为方法中用到了 Song,但是Song此时为 nil。

以下是修改后的代码:

 Song =
{
name = "",
age = ,
} function Song.SetName(self, name)
self.name = name;
end
local ChineseSong = Song;
Song = nil;
ChineseSong.SetName(ChineseSong, "化身孤岛的鲸");
print(ChineseSong.name)

运行结果:

使用冒号可以简化函数的定义与调用,代码如下:

 Song =
{
name = "",
age = ,
} function Song:SetName(name)
self.name = name;
end local ChineseSong = Song;
Song = nil;
ChineseSong:SetName("化身孤岛的鲸");
print(ChineseSong.name);

运行结果:

lua --- 点号 和 冒号的更多相关文章

  1. Lua点号和冒号区别

    定义的时候冒号默认接收self参数调用的时候冒号默认传递调用者自己为参数而句号要显示传递或接收self参数 -- 例如:句号定义,需要显示传递或接收 a = { x = } function a.fu ...

  2. LUA中点号和冒号的区别

    Student = {}; Student.__index = Student; function Student:new(name, age) local temp = {}; setmetatab ...

  3. [转]lua面向对象编程之点号与冒号的差异详细比较

    首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Cl ...

  4. lua面向对象编程之点号与冒号的差异详细比较

    首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Cl ...

  5. Lua中调用函数使用点号和冒号的区别

    1.初学者最易混乱Top1——调用函数时用点号还是用冒号? 我们来看看下面的两句代码: mSprite.setPosition(, ); mSprite:setPosition(, ); 对于初次接触 ...

  6. LUA-点号和冒号

    由于LUA中是模拟类,没有class, 所以这里是使用.号来访问实例的成员 re.SetActive(re, re.activeSelf == false); 而冒号:  则是种语法糖,省略了上面代码 ...

  7. 理解lua 语言中的点、冒号与self

    转载自: http://blog.csdn.net/wangbin_jxust/article/details/12170233 lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号 ...

  8. lua 中的点、冒号与self

    [lua 中的点.冒号与self] lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用. girl = {money = 200} function girl.goToMark ...

  9. LUA中的冒号、点和self

    在Lua编程中,经常会看到有时用点号定义一个table的成员函数,有时却用冒号,在调用的时候也是如此.那么点号和冒号在使用上有什么区别呢?它们与self之间又是什么样的关系呢?稍安勿躁,接下来谜底将一 ...

随机推荐

  1. Cannot resolve reference to bean 'sqlSessionFactory' while setting bean

    今天下载公司以前的一个项目,要和现在的项目进行整合,下载一切顺利,但在开发机器上一跑,憋了. 有两种日志,两种报错:一个是cannot resolve reference to bean 'sqlSe ...

  2. 《论vue在前后端分离项目中的实践之年终总结》

    我是2014年的时候开始了解知道的vue,当时vue还不太成熟,想用但是又怕自己hold不住,况且那时候vue还没有成熟的(路由.验证.ui组件)插件,社区也是不温不火的,再说也没有合适的机遇让我去项 ...

  3. Android - Resource 之 Drawable小结

    本篇直接选择性地翻译官方开发指南 ============================= Drawable有十种类型,如下 (1) - Bitmap file:这个简单,也可以用xml来更详细的定 ...

  4. Ubuntu 18.04.1更改屏幕分辨率

  5. topcoder srm 701 div1 -3

    1.一堆石子有$n$个,Alice,Bob轮流拿,给定每个人每次可以拿的石子的数目的集合.谁先不能拿谁输.问谁能赢? 思路:对于先手来说,输赢的局面一定是从某个数字开始呈循环状态.所以找到这个循环开始 ...

  6. CSS的再深入2(更新中···)

    在上一章中,我们又引出了一个知识点: margin的问题 margin:0 auto:(上下为0,左右自适应)会解决元素的居中问题(auto 自适应)前提是给这个元素设置width 同时,我们又要学习 ...

  7. bzoj 3437 小p的农场

    bzoj 3437 小p的农场 思路 \(f[i]=min(f[j]+\sum\limits_{k=j+1}^{i}{b[k]*(i-k)}+a[i])\) \(f[i]=min(f[j]+\sum\ ...

  8. (转)JPA & Restful

    参考博客: JPA: https://www.jianshu.com/p/b6932740f3c0 https://shimo.im/docs/zOer2qMVEggbF33d/ Restful: h ...

  9. 百度搜索引擎取真实地址-python代码

    代码 def parseBaidu(keyword, pagenum): keywordsBaseURL = 'https://www.baidu.com/s?wd=' + str(quote(key ...

  10. 好用的js模板

    组织form下的 json对象 $.fn.serializeObject = function() { var o = {"unique_id":new Date().getTim ...