lua入门语法,包含安装,注释,变量,循环等
文章目录
- LUA入门
- 什么是lua
- lua安装
- 入门
- lua的使用方式
- 注释
- 定义变量
- lua中的数据类型
- 流程控制
- ifelse
- while语法:
- for
- 函数
- 表
- 模块
LUA入门
什么是lua
一种脚本语言,设计的目的是为了能够在一些应用程序提供灵活的扩展功能和定制功能。
lua安装
有linux版本的安装也有mac版本的安装。。我们采用linux版本的安装,首先我们准备一个linux虚拟机。
安装步骤,在linux系统中执行下面的命令。
curl -R -O http://www.lua.org/ftp/lua-5.3.5.tar.gz
tar zxf lua-5.3.5.tar.gz
cd lua-5.3.5
make linux test
注意:此时安装,有可能会出现如下错误:
此时需要安装lua相关依赖库的支持,执行如下命令即可:
yum install libtermcap-devel ncurses-devel libevent-devel readline-devel
此时再执行lua测试看lua是否安装成功
[root@localhost ~]# lua
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
入门
创建hello.lua文件,内容为
编辑文件hello.lua
vi hello.lua
在文件中输入:
print("hello");
保存并退出。
执行命令
lua hello.lua
输出为:
Hello
效果如下:
lua的使用方式
- 交互式
直接在窗口输入输出,相当于命令行
lua -i
效果:
- 脚本式编程
将代码写到文件中,编译运行文件
创建一个lua文件,内容为
print("666")
执行
lua hello.lua
输出
注释
一行注释:两个减号是单行注释:
--
多行注释:
--[[多行注释多行注释--]]
定义变量
全局变量,在任意一个地方都可以看到,本地变量,在当前的文件,在代码块中才可以看到
-- 全局变量赋值
a=1
-- 局部变量赋值
local b=2
如果变量没有初始化:则 它的值为nil 这和java中的null不同。
lua中的数据类型
Lua 中有 8 个基本类型分别为:nil、boolean、number、string、userdata、function、thread 和 table。
数据类型 | 描述 |
---|---|
nil | 这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。 |
boolean | 包含两个值:false和true。 |
number | 表示双精度类型的实浮点数 |
string | 字符串由一对双引号或单引号来表示 |
function | 由 C 或 Lua 编写的函数 |
userdata | 表示任意存储在变量中的C数据结构 |
thread | 表示执行的独立线路,用于执行协同程序 |
table | Lua 中的表(table)其实是一个"关联数组"(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
实例:
print(type("Hello world")) --> string
print(type(10.4*3)) --> number
print(type(print)) --> function
print(type(type)) --> function
print(type(true)) --> boolean
print(type(nil)) --> nil
流程控制
ifelse
语法:
if (布尔表达式) then--[ 布尔表达式为 true 时执行该语句块 --]
else--[ 布尔表达式为 false 时执行该语句块 --]
endif (布尔表达式) then--[ 布尔表达式为 true 时执行该语句块 --]
elseif(布尔表达式) then--[ 布尔表达式为 false 时执行该语句块 --]
else--[ 布尔表达式为 false 时执行该语句块 --]
end
示例:
while语法:
while(condition)
dostatements
end
实例:
for
语法: 1->10 1:exp1 10:exp2 2:exp3:递增的数量
for var=exp1,exp2,exp3
do <执行体>
end
示例:
函数
lua中也可以定义函数,类似于java中的方法。例如:
--[[ 函数返回两个值的最大值 --]]
function max(num1, num2)if (num1 > num2) thenresult = num1;elseresult = num2;endreturn result;
end
-- 调用函数
print("两值比较最大值为 ",max(10,4))
print("两值比较最大值为 ",max(5,6))
执行之后的结果:
两值比较最大值为 10
两值比较最大值为 6
表
table 是 Lua 的一种数据结构用来帮助我们创建不同的数据类型,如:数组、字典等。
Lua也是通过table来解决模块(module)、包(package)和对象(Object)的。
案例:
-- 初始化表
mytable = {}-- 指定值
mytable[1]= "Lua"-- 移除引用
mytable = nil
模块
(1)模块定义
模块类似于一个封装库,可以把一些公用的代码放在一个文件里,以 API 接口的形式在其他地方调用,有利于代码的重用和降低代码耦合度。
创建一个文件叫module.lua,在module.lua中创建一个独立的模块,代码如下:
-- 文件名为 module.lua
-- 定义一个名为 module 的模块
module = {}-- 定义一个常量
module.constant = "这是一个常量"-- 定义一个函数
function module.func1()print("这是一个公有函数")
endlocal function func2()print("这是一个私有函数!")
endfunction module.func3()func2()
endreturn module
(2)require 函数
require 用于 引入其他的模块,类似于java中的类要引用别的类的效果。
用法:
require("<模块名>")
require "<模块名>"
两种都可以。
我们可以将上面定义的module模块引入使用,创建一个test_module.lua文件,代码如下:
-- test_module.lua 文件
-- module 模块为上文提到到 module.lua
require("module")print(module.constant)module.func3()