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

冒号的作用:1.定义函数时,给函数添加隐藏的第一个参数 self2.调用函数时,默认把当前调用者作为第一个参数传递进去 如 a:b(c) 可以理解为 a.b(a, c) 以下是用点号的定义和调用函数的方式: Song = { name = "", timeLength = , } function Song.SetName(name) Song.name = name; end 以上的函数定义可以使可以,但是有一个很大的问题,思考10s为什么? 假如有以下逻辑: ChineseSong…
定义的时候冒号默认接收self参数调用的时候冒号默认传递调用者自己为参数而句号要显示传递或接收self参数 -- 例如:句号定义,需要显示传递或接收 a = { x = } function a.fun(self) print(self.x) end a.fun(a)--输出1,将a自己做为参数传给fun函数的self 这样调用要传递self,比较麻烦,所以lua给一个方便的方法将函数定义改成冒号,就可以省略self参数 function a:fun() print(self.x) end a.…
Student = {}; Student.__index = Student; function Student:new(name, age) local temp = {}; setmetatable(temp, Student); temp.name = name; temp.age = age; return temp; end function Student:info() print(self.name, self.age); --运行stu2时会报错 -- print("name:…
首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Class   function Class:new(x,y)     local temp = {}     setmetatable(temp, Class)     temp.x = x     temp.y = y     return temp end   function Class:tes…
首先,先来一段在lua创建一个类与对象的代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Class = {} Class.__index = Class   function Class:new(x,y)     local temp = {}     setmetatable(temp, Class)     temp.x = x     temp.y = y     return temp end   function Class:tes…
1.初学者最易混乱Top1——调用函数时用点号还是用冒号? 我们来看看下面的两句代码: mSprite.setPosition(, ); mSprite:setPosition(, ); 对于初次接触Lua的朋友来说,这简直就是噩梦,为嘛函数的调用有两种形式,是让我们随便挑的意思吗? 这两种形式是有区别的,区别很大,但只有一个.不过,暂时不解释,后面再介绍. 2.最简单的类 我们先来看看简单的,来创建一个“类”试试,如下代码: TSprite = { x = , y = , } function…
由于LUA中是模拟类,没有class, 所以这里是使用.号来访问实例的成员 re.SetActive(re, re.activeSelf == false); 而冒号:  则是种语法糖,省略了上面代码中的第一个参数 re:SetActive(re.activeSelf == false); 也就是说:lua中对象.方法,只能找到方法,对象只能是类型,即使传入的是对象,所以等效于确定了单纯的方法! 所以冒号的方法,模拟了对象访问自己方法的思想,但本质不是! 记住:lua没有面向对象!…
转载自: 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) prin…
[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} functi…
在Lua编程中,经常会看到有时用点号定义一个table的成员函数,有时却用冒号,在调用的时候也是如此.那么点号和冒号在使用上有什么区别呢?它们与self之间又是什么样的关系呢?稍安勿躁,接下来谜底将一一为你揭开. 下面先看一个例子 Class = {} Class.__index = Class function Class.new(x,y) local cls = {} setmetatable(cls, Class) cls.x = x cls.y = y return cls end fu…
最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习. 知识涉及:Lua语言编程基础:Lua&C++:Lua扩展.嵌入Lua解释器.裸写C++扩展.借助swig写C++扩展.平台:Linux.gcc4.8.2 一.基础语法 1.print("Hello World") Lua中不需要分号,也不需要python那样的严格格式: 单引号跟双引号等价,多行文本使用两个中括号扩起来:[[multi line]]:…
__index元方法:按照之前的说法,如果A的元表是B,那么如果访问了一个A中不存在的成员,就会访问查找B中有没有这个成员.这个过程大体是这样,但却不完全是这样,实际上,即使将A的元表设置为B,而且B中也确实有这个成员,返回结果仍然会是nil,原因就是B的__index元方法没有赋值.别忘了我们之前说过的:“元表是一个操作指南”,定义了元表,只是有了操作指南,但不应该在操作指南里面去查找元素,而__index方法则是“操作指南”的“索引失败时该怎么办”.这么说有点绕.所以: 举个栗子: fath…
前言 在LUA中,经常可以看到:. self,如果你学习过Java或C#语言,可以这样理解 .对于c#和java的静态方法 :相当于是实例方法 今天在CSDN上看到一篇博客写的很清楚,转载过来 原文出处:http://blog.csdn.net/wangbin_jxust/article/details/12170233 lua编程中,经常遇到函数的定义和调用,有时候用点号调用,有时候用冒号调用,这里简单的说明一下原理. 点号(.)定义和调用 girl={money=200} function…
lua编程中,我们经常也会遇到函数的声明定义和调用. [1]lua中函数定义与调用的方法 lua有两种函数定义和调用的方法(本质都是用属性,方式不同而已): (1)点号形式 (2)冒号形式 两种方法的联系: (1)相同点:本质都是用属性方式 (2)不同点:用冒号形式定义的函数默认会有一个参数self.self实质指向表本身(类似于C++中的this). [2]两种方法的定义调用实例对比 综上可知,两种方式会有四种组合需求: (1)点号定义 && 点号访问 } function _M.set…
1 lua中函数作为表中元素时有三种定义方式 采用‘:’来定义,实际上隐藏了一个形参的声明,这个形参会截获调用函数时的第一个实参并把它赋值给self 2 调用方式,点号和冒号 functb:hello1()functb.hello2() 总结起来就是带:号调用表的函数时,会把表赋值给self,这样函数体里面可以直接使用self访问表的数据…
学习资料 Lua入门和Lua高阶章节 Lua中文文档 阅读笔记,只是记录了知识点和一些注意点,详细的看上面提供的学习资料链接 Lua 基础数据类型 nil(空) boolean(布尔) Lua 中 nil 和 false 为"假",其它所有值均为"真" number(数字) string(字符串) 使用一对匹配的单引号.例:'hello'. 使用一对匹配的双引号.例:"abclua". 字符串还可以用一种长括号(即[[ ]])括起来的方式定义 L…
http://blog.codingnow.com/2015/05/lua_c_api.html http://blog.csdn.net/oilcode/article/details/51086147 https://www.lua.org/manual/5.3/ https://cloudwu.github.io/lua53doc/manual.html 关于异常处理 1. 如果要在C++工程中使用Lua库,需要用C++的编译器来编译Lua库,这会促使编译后的Lua库使用try...cat…
一.lua安装和编程环境搭建 lua语言可以在官网:http://luadist.org/下载安装包安装,编程IDE之前学习使用的是SciTE(https://www.cnblogs.com/movin2333/p/14348703.html),这个IDE安装时会一并安装lua,当然,vscode.idea.luaStudio等IDE也可以编写lua,这次使用SublimeText编写lua,SublimeText的内地官网:http://www.sublimetext.cn/. 二.lua语法…
Lua 之面向对象编程 Lua并不是为面向对象而设计的一种语言,因此,仅从原生态语法上并不直接支持面向对象编程,但Lua的设计中仍然包含了很多面向对象的思想,理解它们也更有助于理解Lua自身的一些高级机制. 对象 Lua中的table就是一种对象,它可以有函数字段.在面向对象(Object Oriented)编程中,对象的方法(method)通常使用self(或this)参数标识对象自身,在Lua中也可以使用冒号(:)实现类似的功能,如下面的例子: Account = {balance=} fu…
--> 这里是添加后复制到另一个文件,对同一文件的操作下次进行... package com.dragon.java.addtotxt; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * 将day19-笔记.txt中每一行前面加上行号和冒号 */ pu…
-- Lua中类的实现 -------------------------------- 基类 ---------------------------- classBase = {x = 0,y = 0} -- x,y为类的成员变量 classBase.__index = classBase -- 这句是重定义元表的索引,必需要有 --模拟构造体,一般名称为new() function classBase:new(x,y)         local self = {}     -- 初始化对象…
这些天,,,,今天终于看到了希望,,,天道酬勤 先说实现的功能...让ESP8266连接无线网,然后让它建立服务器,,我的客户端连接上以后,发给客户端发数据模块打印到串口,,往ESP8266串口里发数据自动转发给网口 先看效果图,终于不需要单片机配置了 程序源码 我的init.lua lighton= pin= gpio.mode(pin,gpio.OUTPUT) tmr.alarm(,,,function() then lighton= gpio.write(pin,gpio.HIGH) el…
0.前言 Lua是一种脚本语言,笔者在学习cocos2dx的时候认识了这个脚本语言. 据个人了解的脚本语言最大的优势是无需编译,使用其内核可以使其跨平台运行. JavaScript,Python,Perl这是笔者之前就知道的脚本语言,其中JavaScript实际使用最多,主要用于网页设计,特效.由于接触Lua时间并不长,无法系统总结Lua特性,这里我就以我比较熟悉的JavaScript(前端方向,下面简称JS)和Lua做一个对比. 首先得说明,JS和Lua大部分语法和使用还是很相似的,下面主要说…
Lua中的table就是一种对象,即它拥有状态.拥有独立于其值的标识(self).table与对象一样具有独立于创建者和创建地的征集周期 什么叫对象拥有独立的生命周期? Account = {balance = } function Account.withdraw(v) Account.balance = Acount.balance-v end --则可进行如下调用 Account.withdraw(v) --[[在函数中使用全局名称Account不是个了习惯 因为这个函数只能针对特定对象使…
lua单引号和双引号的问题 lua 中的 单引号 与 双引号 (" " 与 '') Lua除支持双引号("")表示字符串外, 也支持用单引号('') 注意: 如果字符串中有双引号 要用单引号包括, 如果字符串中有单引号 要用双引号包括 local str = '{"ret":"2"}'local str = "{'ret':'2'}" 如果在lua的一个字符串中,既想表达单引号,又想表达双引号,还想表达 '…
openresty开发系列23--lua面向对象 面向对象编程(Object Oriented Programming,OOP)是一种非常流行的计算机编程架构.java,c++,.net等都支持面向对象 面向对象特征1) 封装:指能够把一个实体的信息.功能.响应都装入一个单独的对象中的特性.2) 继承:继承的方法允许在不改动原程序的基础上对其进行扩充,这样使得原功能得以保存,    而新功能也得以扩展.这有利于减少重复编码,提高软件的开发效率.3) 多态:同一操作作用于不同的对象,可以有不同的解…
openresty开发系列22--lua的元表 举个例子,在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作. 那如何计算两个table的相加操作a+b? local t1 = {1,2,3}local t2 = {4,5,6} local t3 = t1 + t2   ---->  {1,2,3,4,5,6} 类似java的一些操作重载 这种类似的需求,lua 提供了元表(Metatable)和元方法,允许我们改变table的行为,每个…
openresty提供了一个快速访问数据库,快速响应的功能.基于lua + redis,我们可以做到快速响应,达到10k级连接的处理能力. openresty 的小白记录 好的学习资料,从lua到openresty https://moonbingbing.gitbooks.io/openresty-best-practices/content/openresty/simple_api.html 基础类型 布尔类型,可选值 true/false:Lua 中 nil 和 false 为"假&quo…
有关某个命令的详细信息,请键入 HELP 命令名ASSOC 显示或修改文件扩展名关联.ATTRIB 显示或更改文件属性.BREAK 设置或清除扩展式 CTRL+C 检查.BCDEDIT 设置启动数据库中的属性以控制启动加载.CACLS 显示或修改文件的访问控制列表(ACL).CALL 从另一个批处理程序调用这一个.CD 显示当前目录的名称或将其更改.CHCP 显示或设置活动代码页数.CHDIR 显示当前目录的名称或将其更改.CHKDSK 检查磁盘并显示状态报告.CHKNTFS 显示或修改启动时间…
DOS命令详解 命令 \? 可以进入命令帮助 1.md命令创建目录. MKDIR [drive:]pathMD [drive:]path 如果命令扩展被启用,MKDIR 会如下改变: 如果需要,MKDIR 会在路径中创建中级目录.例如: 假设 \a 不存在,那么: mkdir \a\b\c\d 与: mkdir \a chdir \a mkdir b chdir b mkdir c chdir c mkdir d 相同.如果扩展被停用,则需要键入 mkdir \a\b\c\d. 例子:md \a…