前言
lua是一种轻量小巧的脚本语言。
lua特性
1.轻量级,编译后不过200K
2.可扩展性
3.自动内存管理
4.支持面向过程编程和函数式编程
……
lua应用场景
1.游戏开发
2.独立应用脚本
3.web应用脚本
4.扩展和数据库插件
5.安全系统
安装使用
安装问题
1.编译lua时,提示1
lua.c:80:31: fatal error: readline/readline.h: No such file or directory
linux环境缺少readline库。
到ftp://ftp.gnu.org/gnu/readline/ 下载并进行安装
2.安装完readline后提示1
2
3
4
5
6
7
8
9/usr/local/lib/libreadline.so: undefined reference to `tputs'
/usr/local/lib/libreadline.so: undefined reference to `tgoto'
/usr/local/lib/libreadline.so: undefined reference to `tgetflag'
/usr/local/lib/libreadline.so: undefined reference to `UP'
/usr/local/lib/libreadline.so: undefined reference to `tgetent'
/usr/local/lib/libreadline.so: undefined reference to `tgetnum'
/usr/local/lib/libreadline.so: undefined reference to `PC'
/usr/local/lib/libreadline.so: undefined reference to `tgetstr'
/usr/local/lib/libreadline.so: undefined reference to `BC'
需要安装Ncurses
3.编译Ncurses提示 error: expected ‘)’ before ‘int’
导入环境变量,在进行配置编译,安装,命令如下1
2
3
4
5export CPPFLAGS="-P"
./configure
make
make install
Ncurses
参考:
https://stackoverflow.com/questions/37475222/ncurses-6-0-compilation-error-error-expected-before-int
总结:安装成功安装lua的前提是linux上有readline和ncurses库.
Hello World
和Python类似,它也可以交互式编程,在命令行输入lua后即可进入:1
2
3>print("Hello World")
Hello World
>
当然也可以将脚本内容写在文件,例如,将上面的内容写在hello.lua:1
2#!/usr/local/bin/lua
print("Hello World")
其中第一行指定了lua解释器路径,执行:1
2
3 chmod +x hello.lua #赋予执行权限
./hello.lua
Hello World
这里注意,如果你没有加第一行,shell就不知道用哪个解释器去解释运行,当然你也可以通过下面的方式运行:1
$ lua hello.lua
注释
同样地,它至少有两种注释,单行注释使用—:1
2-- 这里是单行注释
print("hello")
多行注释:1
2
3
4
5--[[
多行注释
多行注释
--]]
print("yanbinghu.com")
语法
数据类型
- nil—表示无效值
- boolean false和true,lua将nil看成是”假”
- number 双精度类型的实浮点数
- string 字符串
- function 由c或lua编写的函数
- userdata 表示任意存储在变量中的c数据结构
- thread 表示执行的独立线路,用于执行协同程序
- table lua中的表,类似于关联数组
判断类型
可以通过type函数来判断数据类型1
2print(type(“hello”) ) --string
print(type(type)) --function
字符串算数操作
在对一个数字字符串上进行算术操作时,Lua 会尝试将这个数字字符串转成一个数字:
例如:1
2>print(“2” + “6”)
8
- 字符串连接 ..
1 | >print(“a”..”b”) |
- 计算字符串长度 #
1 | >print(#“a”) |
table
Lua 里表的默认初始索引一般以 1 开始
变量
默认情况下,变量总认为是全局的.
全局变量不需要声明,访问未初始化的全局变量不会报错,得到的结果是 nil想删除一个全局变量,只需要将变量赋值为nil
当且仅当该变量不为nil时,变量存在a =1 —>全局变量
local b =2 —>局部变量
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。