lua基础学习
- LUA 语言
- 1. 什么是lua?
- 1.1 准备工作
- 2. 基本语法
- 2.1 注释
- 2.2 标识符
- 2.3 关键字
- 2.4 全局变量
- 3. 数据类型
- 4. 变量
- 4.1 赋值语句
- 5. 循环
- 5.1 while循环
- 5.2 for循环
- 5.3泛型for循环
- 5.4 repeat until 循环
- 5.5 break 语句
- 6. 流程控制
- 6.1 if语句
- 6.2 if else 语句
- 6.3 if else if 语句
LUA 语言
1. 什么是lua?
lua 是轻量小巧的编程语言,其设计的目的就是为了嵌入到应用程序里面去。
从而为应用程序 提供扩展。
使用的是标准的c并以源码的方式对外开放
1.1 准备工作
首先下载lua -> lua官网 下载
到达官网之后点击 download
选择压缩文件,这里面的是源码需要我们编译。
在这里我使用的是linux系统。
- 将压缩包传入到虚拟机我使用的是Xftp和Xshell 找到存放压缩包的目录
tar - zxvf lua-5.4.6.tar.gz
- 解压之后就是到达有 makefile的文件夹
make linux
- 到这里就基本完成了
- make完成之后会生成两个exe文件分别是lua 和luac
- 其中lua是可以直接执行lua 脚本的
- luac则是将lua编译生成.out文件然后运行.out文件
在这期间我遇到了一个问题就是我没有make命令。只需要输入如下命令即可:
yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++
2. 基本语法
2.1 注释
- 单行注释
--
- 多行注释(快捷键 一般为 ctrl + shift + ?)
--[[
多行注释
多行注释
--]]
2.2 标识符
lua 可以使用_,数字,字母,表示变量但是不能使用特殊符号表示变量。下面都是正确的表示符表示。
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal
2.3 关键字
首先是关键字被lua 保留了 不能作为用户自定义的标示符。
and | break | do | else |
elseif | end | false | for |
function | if | in | local |
nil | not | or | repeat |
return | then | true | until |
while | goto |
一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
2.4 全局变量
默认情况下 变量都是全局的,局部的变量出现在方法中。
3. 数据类型
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 的创建是通过"构造表达式"来完成,最简单构造表达式是{},用来创建一个空表。 |
4. 变量
Lua 变量有三种类型:全局变量、局部变量、表中的域。
加上 local 的变量就是局部变量 只能作用于该文件
而如果在一个方法中定义了一个加local的变量那么这个变量只在这个方法中可见
a = 5 -- 全局变量
local b = 5 -- 局部变量
function joke()
c = 5 -- 全局变量
local d = 6 -- 局部变量
end
-- joke() 要先进行调用才可以直接使用
-- print(c,d) --5 nil
print(c,d) -- nil nil
4.1 赋值语句
site = {}
site["key"] = "www.baidu.com"
print(site.key)
print(site["key"])
-- 当索引为字符串类型时的一种简化写法
-- 采用索引访问本质上是一个类似这样的函数调用
-- www.baidu.com
-- www.baidu.com
Lua 可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
a,b =10,"dada"
print(a,b)
c,d,e,f=10
print(c,d,e,f)
--变量个数 > 值的个数 按变量个数补足nil
--变量个数 < 值的个数 多余的值会被忽略
5. 循环
5.1 while循环
在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。
a=0
while(a < 10)
do
print("a的值是:",a)
a = a+1
end
5.2 for循环
for var=exp1,exp2,exp3 do
<执行体>
end
var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。
for i = 20, 10,-2 do
print(i)
end
5.3泛型for循环
泛型 for 循环通过一个迭代器函数来遍历所有值,类似 java 中的 foreach 语句。
a= {"one","two","three","four","five"}
for i, v in ipairs(a) do
print(i,v)
end
5.4 repeat until 循环
for 和 while 循环的条件语句在当前循环执行开始时判断,而 repeat…until 循环的条件语句在当前循环结束后判断。
b =0
repeat
print(b)
b = b+1
until(b >10 )
5.5 break 语句
break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句
a = 10
--[ while 循环 --]
while( a < 20 )
do
print("a 的值为:", a)
a=a+1
if( a > 15)
then
--[ 使用 break 语句终止循环 --]
break
end
end
6. 流程控制
6.1 if语句
流程控制语句通过程序设定一个或多个条件语句来设定。在条件为 true 时执行指定程序代码,在条件为 false 时执行其他指定代码。
--[ 0 为 true ]
if(0)
then
print("0 为 true")
end
6.2 if else 语句
Lua if 语句可以与 else 语句搭配使用, 在 if 条件表达式为 false 时执行 else 语句代码块。
if(布尔表达式)
then
--[ 布尔表达式为 true 时执行该语句块 --]
else
--[ 布尔表达式为 false 时执行该语句块 --]
end
a =10
if(a >6)then
print("我比6大")
else
print("我比6小")
end
Lua认为false和nil为假,true 和非nil为真。要注意的是Lua中 0 为 true。
6.3 if else if 语句
if … else if…else 语句搭配使用, 在 if 条件表达式为 false 时执行 elseif…else 语句代码块,用于检测多个条件语句。
if( 布尔表达式 1)
then
--[ 在布尔表达式 1 为 true 时执行该语句块 --]
elseif( 布尔表达式 2)
then
--[ 在布尔表达式 2 为 true 时执行该语句块 --]
elseif( 布尔表达式 3)
then
--[ 在布尔表达式 3 为 true 时执行该语句块 --]
else
--[ 如果以上布尔表达式都不为 true 则执行该语句块 --]
end