入门
程序段
lua -i prog
-i
让lua
语言解释器执行完指定的程序后进入交互模式可以在交互模式下通过
dofile
运行程序段:
dofile("aet.lua")
词法规范
- 标识符由任意字母,数字和下划线组成,但不能以数字开头
lua
对大小写敏感--
表单行注释--[[ something ]]
表多行注释
全局变量
- 全局变量无需声明即可使用
- 使用未经初始化的全局变量不会导致错误,结果为
nil
- 把
nil
赋值给全局变量,lua
会回收该全局变量
类型和值
userdata
类型允许把任意的C语言数据保存在lua
语言变量中- 逻辑运算符:
and
or
not
and
or
遵循短路求值
独立解释器
lua -e "print(math.sin(12))"
-e
参数允许直接在命令行中输入代码
lua -l lib
-l
参数用于加载库解释器在处理参数前,会查找名为
LUA_INIT_5_3
的环境变量,如果找不到,就会再查找名为LUA_INIT
的环境变量。如果这两个环境变量中的任意一个存在,并且其内容为@filename
,那么解释器就会运行相应的文件;如果LUA_INIT_5_3
或LUA_INIT
存在但不以@
开头,那么解释器就会认为其保护lua
代码,并会对其进行解释执行。
数值
从
lua 5.3
版本开始,lua
语言为数值格式提供了两种选择:被称为integer
的64位整型和float
的双精度浮点类型。
数学库
math
- 三角函数
- 指数函数
- 取整函数
floor
:向负无穷取整ceil
:向正无穷取整modf
:向0取整- 最大,最小函数
- 伪随机数函数
- 常量
pi
和huge
表示范围
标准
lua
使用64个比特位来存储整型值。对于浮点数而言,标准
lua
使用双精度。标准lua
使用64个比特位表示所有的数值,其中11位为指数。双精度浮点数可以表示具有大致16个有效十进制的数。精简
lua
使用32个比特位表示单精度浮点数,大致具有7个有效十进制位。
惯例
通过增加
0.0
的方法将整型值强制转换为浮点型值
-3 + 0.0
0x7fffffffff + 0.0
字符串
lua
里面的字符串是不可变值的。和
lua
里面的其他对象(表,函数)一样,lua
里的字符串也是自动内存管理的对象之一。可以使用长度操作符
#
获取字符串的长度:
a = "hello"
print(#a)
该操作符返回字符串所占用的字节数可以使用连接操作符
..
来进行字符串连接(如果操作数中存在数值,那么lua
会先把数值转换成字符串)
双引号和单引号字符串是等价的。
唯一的区别:
使用双引号声明的字符串中出现单引号时,单引号可以不用转义;使用单引号声明的字符串中出现双引号时,双引号可以不用转义。
字符串标准库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
string.len(s) //长度 string.rep(s,n) //返回字符串s重复n次的结果 string.reverse(s) //字符串翻转 string.lower(s) //返回s的副本,其中所有大写字母转小写字母 string.upper(s) //返回s的副本,其中所有小写字母转大写字母 string.sub(s,i,j) //从字符串s中提取第i到j个字符 string.char() //接收0到多个整数作为参数,把整数转换成对应的字符,返回由这些字符组成的字符串 string.byte(s,i) //返回字符串s中第i个字符的内部数值表示 string.byte(s) //返回字符串s中第一个字符的内部数值表示 string.format("x = %x",100) //进行字符串格式化和将数值输出为字符串 |
Unicode编码
1 2 3 4 5 6 7 8 9 10 11 12 |
utf8.len(s) //返回utf8字符的个数 utf8.char() utf8.codepoint() //UTF8环境下的string.char和string.byte utf8.offset //把字符位置转换为字节位置 utf8.codes //用于遍历UTF8字符串的每一个字符 |
表
表是
lua
里面唯一的数据结构
lua
里面的表本质上是一种辅助数组,这种数组不仅可以使用数值所谓索引,也可以使用字符串或其他类型的值作为索引(nil
除外)
lua
里面的表,要么是值,要么是变量,他们都是对象。表永远是匿名的,表本身和保存表的变量之间没有固定的关系。对于一个表来说,当程序中不再有指向它的引用时,垃圾收集器最终会删除这个表重用其所占的内存。
lua
使用表来存储全局变量。
遍历表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
t = {10,print,x = 12,k = "hi"} for k,v in pairs(t) do print(k,v) end --> 1 10 --> k hi --> 2 function::0x... -->x 12 //对于列表,可以用ipairs t = {10,print,12,"hi"} for k,v in ipairs(t) do print(k,v) end |
表标准库
1 2 3 4 5 |
table.insert(t,line) //向序列指定位置插入一个元素 table.remove(t)//table.remove(t,1) //删除并返回序列指定位置的元素 |
本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ Lua_调用 C++程序里的函数,给Lua调用10/01
- ♥ Lua_调用 C++函数:获取返回值10/09
- ♥ Lua_基础 结构控制09/27
- ♥ C++_调用 Lua内容:全局表 获取&&设置10/09
- ♥ C++_调用 Lua内容:表—传递&&获取10/12
- ♥ lua学习记述一08/11