lua脚本语言学习(一)
lua脚本语言学习
- 单行注释:–
- 多行注释:–[[ 多行注释 --]]
- 标识符区分大小写
- 在默认情况下,变量总是认为是全局的。全局变量不需要声明,给一个变量赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是:nil。 如果你想删除一个全局变量,只需要将变量赋值为nil。 当且仅当一个变量不等于nil时,这个变量即存在。
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数(对比C中的double) |
string | 字符串由一对双引号或单引号来表示,用2个方括号“[[]]”来表示“一块”字符串 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
- 可以使用type函数测试给定变量或者值的类型
- 字符串连接用的是 “…” 。对一个数字字符串进行算数操作时,lua会将这个数字字符转成一个数字
- “#”放在字符串前面,用来计算字符串的长度。
- 划重点了,lua语言的表的默认初始索引一般以1开始
- 在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
- Lua 变量有三种类型:全局变量、局部变量、表中的域。Lua 中的变量全是全局变量,那怕是语句块或是函数里,除非用 local 显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。变量的默认值均为 nil。
- Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。 遇到赋值语句Lua会先计算右边所有的值然后再执行赋值操作。 当变量个数和值的个数不一致时:
a. 变量个数 > 值的个数 按变量个数补足nil
b. 变量个数 < 值的个数 多余的值会被忽略
循环
while
a = 10 while(a < 20) doprint(a)a = a + 1 end
数组for( var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 “执行体”。exp3 是可选的,如果不指定,默认为1。 )
for i=10,1,-1 doprint(i) end
泛型for( i是数组索引值,v是对应索引的数组元素值。ipairs是Lua提供的一个迭代器函数,用来迭代数组。 )
--打印数组a的所有值 a = {"one", "two", "three"} for i, v in ipairs(a) doprint(i, v) end
- repeat … until。循环总会执行一次
--[ 变量定义 --] a = 10 --[ 执行循环 --] repeatprint("a的值为:", a)a = a + 1 until( a > 15 )
流程控制
- if语句( 控制结构的条件表达式结果可以是任何值,Lua认为false和nil为假,true和非nil为真。 )
if( 布尔表达式 1) then--[ 在布尔表达式 1 为 true 时执行该语句块 --]elseif( 布尔表达式 2) then--[ 在布尔表达式 2 为 true 时执行该语句块 --]elseif( 布尔表达式 3) then--[ 在布尔表达式 3 为 true 时执行该语句块 --] else --[ 如果以上布尔表达式都不为 true 则执行该语句块 --] end
函数
- 多返回值、可变参数(…)
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)function_bodyreturn result_params_comma_separated end
算数运算符(+、-、*、/、%、^)
关系运算符(==、~=、>、<、>=、<=)
逻辑运算符(and、or、not)
其他运算符(…(连接两个字符串)、#(一元运算符,返回字符串或表的长度))
Lua table 使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是 nil。Lua table 是不固定大小的,你可以根据自己需要进行扩容。
Lua提供了一个名为require的函数用来加载模块 。
require("<模块名>") 或者 require "<模块名>"
- 文件I/O,分为简单模式、完全模式。简单模式和C差不多,完全模式使用外部的文件句柄来实现,它以一种面向对象的方式,将所有的文件操作定义为文件句柄的方法。
lua脚本语言学习(一)相关推荐
- Lua脚本语言学习总结 入门、复习Lua语言看这一篇就够了
文章目录 Lua 概念 特性 应用场景 Lua的安装 Lua的语法 第一个Lua程序 Lua的注释 标识符 关键字 运算符 全局变量&局部变量 Lua数据类型 nil boolean numb ...
- 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)
游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...
- java lua脚本_请问该如何在Java中使用Lua脚本语言?
如何在Java中使用Lua脚本语言是本文要介绍的内容,主要是来学习LUA脚本语言在JAVA中如何来使用,Lua就不说了, 现在比较热门, 语法也很简单. 为了在Java中调用, 折腾了比较长的时间, ...
- fceux源码解析_FCEUX金手指加强版 - 使用Lua脚本语言编写FC/NES金手指脚本
一直觉得大部分的FC/NES模拟器的作弊码金手指不是那么方便使用, 比如魂斗罗1代, 玩家的武器可以通过修改0xAA的值来改变: 0x11为M弹(重机枪),0x12为F弹(圈圈),0x13为S弹(散弹 ...
- java lua_请问该如何在Java中使用Lua脚本语言?
大话西游666 如何在Java中使用Lua脚本语言是本文要介绍的内容,主要是来学习LUA脚本语言在JAVA中如何来使用,Lua就不说了, 现在比较热门, 语法也很简单. 为了在Java中调用, 折腾了 ...
- java lua_如何在Java中使用Lua脚本语言
展开全部 如何在Java中使用Lua脚本语言是本文要介32313133353236313431303231363533e59b9ee7ad9431333335343933绍的内容,主要是来学习LUA脚 ...
- 游戏中使用LUA脚本语言的简介
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 我们知道 ...
- (三)Lua脚本语言入门
又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的"艰苦忍耐"式的奋斗,那这是一种很不足的心理状态 ...
- Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)
http://www.lupaworld.com/action-viewstutorial-itemid-10105.html Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言) 文章来源于htt ...
- 【转】Lua脚本语言入门
Lua脚本语言入门(目前魔兽使用的可以写在宏内的语言)(中文)-zt 作者: 沐枫 Lua 程序设计初步 作者: 沐枫 (第二人生成员) 版权所有转载请注明原出处 在这篇文章中,我想向大家介绍如何进行 ...
最新文章
- c 普通的文本变成注释文本的快捷键_2019年IntelliJ IDEA快捷键终极大全,绝版!速度收藏!...
- android 调用手机震动
- 风险度量之[下行风险]
- Windows下MySQL下载安装、配置与使用
- git 如何清理操作日志_git如何清空所有的commit记录
- kafka如何彻底删除topic及数据
- 服务器监控工具_8款服务器和应用性能监控工具
- 如何使用Visual Studio无需成本即可实现连续集成
- 水晶报表如何查看sql_amazon自动广告如何查看报表?怎么知道亚马逊的自然流量和广告流量分别是多少?...
- VR 、AR 谁让你眼前一亮
- mysql qps 索引查询_mysql QPS 抓取和分析
- 服务器安全防护措施有哪些?
- C51单片机烧录器使用(USB转TTL)
- Markdown——图片、文字显示居中的一种方法
- Vue项目生成二维码
- ffmpeg Intel硬件加速总结
- Cesium 获取当前屏幕范围内的中心点以及相机姿态
- SpringAop篇 (2) Spring中的切面编程技术 AspectJ
- 简单说说rebuttal
- 解决Vivado HLS 高层综合失败
热门文章
- Java进阶:SpringMVC中获取web.xml中的全局参数
- 南昌大学c语言程序设计,南昌大学C语言程序设计试卷C语言2.doc
- linux进程管理概念,Linux教程之进程的概念和进程管理命令的使用
- eclipse java 报错信息_解决Eclipse启动时报Initializing Java Tooling异常信息
- Spring Boot 中统一异常处理最佳实践介绍
- 第一次学会!=EOF
- 剑指前端(前端入门笔记系列)——Date对象
- 聚类-----KMeans
- Oracle递归查询所有树结构,并确定其中的一条分支
- 《构建之法》第四章读后感--软件工程