Lua中“.”调用方法与“:”调用方法的区别
Lua中“.”调用方法与“:”调用方法的区别:
一、概述
学lua的时候有一个迷惑点,就是搞不清楚‘.’与‘:’调用方法的区别,今天很早就起来看了看一个大牛的视频讲解,才顿悟了:‘.’调用和‘:’实际是传递参数的个数不同而已,‘:’实际是一个语法糖。
二、演示
require"members"
require"player"
require"guns"
require"function" local tom=Player.New() --新建一个tom的 player tom.name="Tom" --将tom的名字赋值为"Tom" print(tom.name,tom.life) --打印tom的name tom的life local doris=Player.New() --新建一个”doris" 的player doris.name="Doris" --将doris的名字赋值为“Doris” for k,v in pairs(Guns) do --在Guns中遍历attack==20的武器,找到后将tom的武器赋值为v,跳出循环
if v.attack== then
tom.weapon=v
break
end
end print("tom's weapon :",tom.weapon.name) --打印出“tom‘s weapon:” tom.weapon.name --tom -> meta table -> __index -> "Attack" field or method
--这里传递了两个参数 tom:Attack(self->doris,var->attack)
tom:Attack(doris) --tom:attack(doris) . 和 : 调用有所不同 .只是调用它方法 :调用 还可以访问到tom本身的属性 --这里传递1个参数 tom:Attack(var->attack)
tom.Attack1(doris) --tom:attack(doris) . 和 : 调用有所不同
print("doris life",doris.life) --打印攻击完了后doris的生命值
Player={} --新建一个player的表
Player.__index=Player --共享player的数据
function Player.New() --player的new()方法
local obj={name="unkown",life=}
setmetatable(obj,Player)
return obj --返回obj={name="unkown",life=100} && plyer的属性:Attack
end
--这里的冒号传递了两个参数 Player:Attack(self->tom,var->target)
function Player:Attack(target)
print("attack",target.name) --打印("attack",target.name)
--this ptr
target.life=target.life-self.weapon.attack --目标的生命值=目标生命值-self.weapon.attack self=tom
end
--这里的冒号传递了一个参数 Player:Attack1(var->target)
function Player.Attack1(target)
print("attack",target.name) --打印("attack",target.name)
--this ptr
target.life=target.life-self.weapon.attack --目标的生命值=目标生命值-self.weapon.attack self=tom
end
Lua中“.”调用方法与“:”调用方法的区别的更多相关文章
- Lua中的元表与元方法学习总结
前言 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了"+"符号,就可以进行类的加法运算.在Lu ...
- cocos2dx lua中继承与覆盖C++方法
cocos2dx的extern.lua中的class方法为lua扩展了面向对象的功能,这使我们在开发中可以方便的继承原生类 但是用function返回对象的方法来继承C++类是没有super字段的,这 ...
- Lua中的元表与元方法
[前言] 元表对应的英文是metatable,元方法是metamethod.我们都知道,在C++中,两个类是无法直接相加的,但是,如果你重载了“+”符号,就可以进行类的加法运算.在Lua中也有这个道理 ...
- Lua中的元表和元方法
Lua中每个值都可具有元表. 元表是普通的Lua表,定义了原始值在某些特定操作下的行为.你可通过在值的原表中设置特定的字段来改变作用于该值的操作的某些行为特征.例如,当数字值作为加法的操作数时,Lua ...
- 在Lua中提示UnityEngine.dll的方法
我的环境 安装最新的 EmmyLua-1.2.1及以上版本 IDEA 2017.1.2 及以上版本 关于EmmlyLua的介绍可查看我之前的文章:Lua代码提示和方法跳转 说明:本文方法摘自 Emmy ...
- 在lua中正确使用uuid的方法:
-- 参考:http://ju.outofmemory.cn/entry/97724local function guid() local template ="xxxxxxx ...
- Lua中使用table实现的其它5种数据结构
Lua中使用table实现的其它5种数据结构 lua中的table不是一种简单的数据结构,它可以作为其他数据结构的基础,如:数组,记录,链表,队列等都可以用它来表示. 1.数组 在lua中,table ...
- Lua中的环境概念
[前言] Lua将其所有的全局变量保存在一个常规的table中,这个table称为“环境”.这种组织结构的优点在于,其一,不需要再为全局变量创造一种新的数据结构,因此简化了Lua的内部实现:另一个优点 ...
- 关于LUA中的随机数问题
也许很多人会奇怪为什么使用LUA的时候,第一个随机数总是固定,而且常常是最小的那个值,下面我就简要的说明一下吧,说得不好,还请谅解.我现在使用的4.0版本的LUA,看的代码是5.0的,呵呵 LUA4. ...
- lua学习:lua中“类”的实现
在之前的面试遇到考用lua实现类的题目.现在就补补这块知识点. 我们都知道Lua中的table是一个对象.拥有状态,拥有self,拥有独立于创建者和创建地的生命周期. 一个类就是一个创建对象的模具.L ...
随机推荐
- node中的favicon.icon请求
var http=require("http"); var server=http.createServer(); server.on("request", c ...
- JAVA中构造函数的参数传递给类中的实例变量
class VolcanoRobot1 { String status; int speed; float temperature; VolcanoRobot1(int speed,float tem ...
- 一、linux搭建jenkins+github详细步骤
事情缘由: 现在在做的主要工作是通过jenkins+postman实现api的自动化测试,想要达到的效果是,api自动化测试定时跑脚本的同时,github有新的代码提交,jenkins会自动检测部署新 ...
- [转载]用 FFMPEG 合并 MP4 视频
因为 ffmpeg 是支持切分 mp4 视频的,所以我就理所当然的以为 ffmpeg 是支持视频合并.直到今天同事找我问方法,才发现一直以为的方法是错误的, mp4 不支持直接 concate(丢人了 ...
- Set与List之间转化
List list = new ArrayList(set);Set set = new HashSet(list); //但是有一点,转换当中可能要丢失数据,尤其是从list转换到set的时候,因为 ...
- Bresenham画线算法
[Bresenham画线算法] Bresenham是一种光栅化算法.不仅可以用于画线,也可以用用画圆及其它曲线. 通过lower与upper的差,可以知道哪一个点更接近线段: 参考:<计算机图形 ...
- Apache Hive (五)DbVisualizer配置连接hive
转自:https://www.cnblogs.com/qingyunzong/p/8715250.html 一.安装DbVisualizer 下载地址http://www.dbvis.com/ 也可以 ...
- 什么是展uv
uvw是对应三维模型x.y.z坐标,就像模型的皮肤一样,为了便于绘制贴图,需要将UV尽量展平 展UV就是把你建好的模型展开成平面,别人就可以在那平面上做材质,皮肤等,这些东西.例如展一个正方体的UV, ...
- SpringBoot整合SpringData和Mysql数据库
1.新建maven项目(具体的新建过程就不细说了) 2.添加maven依赖,也就是在pom.xml文件添加项目的依赖jar包: <project xmlns="http://maven ...
- Thinking in 查询设计
近日,互联网动物园的各位小伙伴们召开了一次会议,考虑到大火的电子商务,准备在动物园里开发一个电商系统.首先上台的是销售山鸡,清了清嗓子,说道,人类正在进行电商革命,动物园也需要上一个电商系统,必要性有 ...