lua 语言基础
1.数据类型:
string(字符串)
·运算符“+、-、*、/”等操作字符串,lua会尝试讲字符串转换为数字后操作;

·字符串连接用“..”运算符

·用“#”来计算字符串的长度(放在字符串前面)

·字符串的相关操作以及格式化操作
Table(表)
·表的初始化:
Loacl tbl1 = {};
Local tbl2 = {“apple”,”pear”,”orange”,grape};
·lua 的数组的默认初始索引一般从 1 开始
·table 不会固定长度大小,有新数据时table会自动增长,未初始化的table都是nil;
Function(函数)
·Lua中,函数被看做是“第一类值(first-class Vaule)”,可以存在变量里

·function可以通过匿名函数的方式通过参数传递

此时 函数testFun再传参的过程中 匿名函数 被执行 实际穿的参数为 匿名函数的返回值
thread(线程)
·在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
协程:当钱运行的代码可以看作运行在主协程中(就像C程序中的main运行在主线程中),通过create可以创建一个协程,resume以运行此协程,直到新协程调用yield程序才能返回到“主协程”中进行
Userdata(自定义类型)
·用于表示一种应用程序或C/C++语言库所创建的类型,可以将任意C/C++的任意数据类型的数据(一般来说是struct和指针)储存到lua变量中调用。
赋值语句
·Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
Eg:
a,b = 10,2*x; <--> a=10; b=2*x
·遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作,所以我们可以这样进行交换变量的值:
Eg:
x, y = y, x -- swap 'x' for 'y'
a[i], a[j] = a[j], a[i] -- swap 'a[i]' for 'a[j]'
·当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略.
·如果要对多个变量赋值必须依次对每个变量赋值。
Eg:a,b,c = 0,0,0;
a, b = f() -- f()如果返回两个值第一个给a,第二个给b
·访问局部变量比访问全局变量要快
Table的索引
·当索引为字符串类型时可以简化:tab[“key”] <--> tab.key
Lua循环
1.数值循环
for var=exp1,exp2,exp3 do
<执行体>
end
Var 从exp1变化到exp2 每次变化以exp3为步长递增,并执行一次执行体
exp3 可以省略 如果省略默认值为 1
1.泛型循环
a = {"one", "two", "three"};
for i, v in ipairs(a) do
print(i, v)
end
ipairs迭代器和pairs迭代器:
pairs可以遍历表中所有的key并且除了迭代器本身以及遍历表本身还可以返回nil;
但是ipairs则不能返回nil,只能返回数字0,如果遇到nil则退出
2.Lua repeat...until 循环
repeat
statements
until( condition )
-- 执行......直到
Lua 流程控制
If 条件语句1 then
执行语句1
else if 条件语句2 then
执行语句2
Else
执行语句3
End
Lua函数特征
·多返回值
·可变参数
Lua函数可以接受可变数目的蚕食,和C类似,在函数参数列表中使用三点...表示函数有可变的参数
可以通过select(“#”,...)来取可变参数的数量
可以通过select(n,...)来访问第n个可变参数(如果n大于参数数量则返回nil)
如果是固定参数加可变参数 固定参数必须在可变参数之前
Lua运算符
· ~= 不等于
·and 逻辑与
·or 逻辑或
·not 逻辑非
lua 语言基础的更多相关文章
- Cocos2d-x-Lua (2.x)脚本开发之 Lua语言基础
从今天開始,往后将陆续更新Lua教程,主要是搭载Cocos2dx ,有不论什么疑惑或者不正确的地方.尽情指正.交流.探讨. 那么首先肯定是Lua语言基础的知识点.以下直接附上代码,凝视已经非常清楚.无 ...
- 【quick-cocos2d-x】Lua 语言基础
版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...
- lua 语言笔记
Lua语言基础汇总(1) -- 类型与值 基础介绍 Lua是一种动态类型的语言.在语言中没有类型定义的语法,每个值都带有其自身的类型信息.在Lua中有8种基本类型,分别是: nil(空)类型 bool ...
- 51CTO专访淘宝清无:漫谈Nginx服务器与Lua语言
http://os.51cto.com/art/201112/307610.htm 说到Web服务器,也许你第一时间会想到Apache,也许你会想到Nginx.虽然说Apache依然是Web服务器的老 ...
- 编译并使用Lua语言
Lua是一个小巧的脚本语言,该语言设计的目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能. 可扩展性.Lua的扩展性非常卓越,可以通过Lua代码或C代码扩展,很多功能可以通过外部库来扩 ...
- Go语言基础之变量和常量
Go语言基础之变量和常量 变量和常量是编程中必不可少的部分,也是很好理解的一部分. 标识符与关键字 标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名.常量名.函数名等等. Go语 ...
- lua脚本之lua语言简介以及lua的安装
本博主不擅于进行文字创作,所以,相当一部分文字皆复制于其他博文.还希望能够得到谅解. 一.Lua语言简介 Lua是一个免费的开源软件,可以免费用于科研及商业.Lua具有一个专家团队在维护和升级,其设 ...
- Unicode与UTF-8互转(c语言和lua语言)
1. 基础 1.1 ASCII码 我们知道, 在计算机内部, 全部的信息终于都表示为一个二进制的字符串. 每个二进制 位(bit)有0和1两种状态, 因此八个二进制位就能够组合出 256种状态, 这被 ...
- Lua语言中文手册 转载自网络
Programming in LuaCopyright ® 2005, Translation Team, www.luachina.net Programming in LuaProgramming ...
随机推荐
- 关于macOS 管理员(Admin)权限问题。
最近突然想改下用户名,于是在用户与组里解锁,然后两个手指点击用户那一行,更改fullname,不过出于好奇把uid和uuid也改了. 之后发现current user等级由Admin变成Standar ...
- cocos2d-x入门学习笔记——Hello world分析
Hello world分析 1. “resource”文件夹 用于存放图片.音频和配置等资源文件.为了方便管理,可以创建在其中创建子文件夹.Cocos2d-x为我们屏蔽了不同平台对于文件路径的定义. ...
- asp.net webapi 获取报文体的问题
用这种方法: var data=await Request.Content.ReadAsStringAsync(); 一般都无法获取到内容.原因是内部的流对象已经到了最后面.要获取到里面的需要把流的位 ...
- L1-Day13
1.Being late is an unforgivable sin here.[我的翻译]在北京,迟到是不可饶恕的罪名.[标准答案]在这里迟到是不可原谅的.[对比分析]对自己的也是醉醉的了,Bei ...
- git工具——版本的创建与回退
1.创建一个版本库 进入要管理的文件路径:cd f:/ZK/Opencv3.4.2-YOLOv3 输入命令: git init 2.版本创建与回退 在文件目录下创建一个文件code.txt: vi c ...
- 关于shell变量的继承总结
结论: 默认,父shell和子shell的变量是隔离的. sh方式运行脚本,会重新开启一个子shell,无法继承父进程的普通变量,能继承父进程export的全局变量. source或者. 方式运行脚本 ...
- 项目Alpha冲刺(团队)-第四天冲刺
格式描述 课程名称:软件工程1916|W(福州大学) 作业要求:项目Alpha冲刺(团队)-代码规范.冲刺任务与计划 团队名称:为了交项目干杯 作业目标:描述第三天冲刺的项目进展.问题困难.心得体会 ...
- Mybatis 笔记
环境:Mybatis 3 +MariaDB 10.1 似乎在调用存储过程时 ,参数只能写在一行上. 否则会返回语法错误.
- 小程序如何传数组数据到vs后台中
首先小程序要跟vs运行的状态打通,首先要修改配置,也就是说调试的时候,小程序一使用Post请求后台的方法时就能让vs进入调试状态. 1.修改vs中的配置,注意这个.vs文件,如图: 找到这个文件 然后 ...
- bzoj 2741
题目描述:这里 一道非常好的题 由于强制在线,我们必须要用一些数据结构来处理 考虑分块:将整个序列分块,块内部分预处理,块外部分暴力处理 对于每个块,计算出以这个块的左端点为端点,向右枚举这个块以后的 ...