Lua

概述

1、设计目的:嵌入到其他应用程序中,从而为应用程序提供灵活的扩展和定制功能

2、特性

(1)轻量级:轻量、小巧的脚本语言,标准 C 语言编写,并以源代码形式开发,方便嵌入到其他程序中

(2)可扩展:提供丰富、易用的扩展接口、机制,由宿主语言(C/C++)提供功能

(3)支持面向过程编程、函数式编程

 

Linux 安装

1、下载

(1)-R / --remote-time:在本地生成文件时,保留远程文件时间

(2)-O / --remote-name:把输出写到该文件中,保留远程文件的文件名

curl -R -O http://www.lua.org/ftp/lua-5.4.4.tar.gz

2、解压

tar zxf lua-5.4.4.tar.gz

3、切换目录

cd lua-5.4.4

4、编译所有程序、并检查

make all test

5、安装

make install

 

语法

1、交互式

(1)在命令行输入程序,然后回车就可以看到运行的效果

(2)通过命令 lua -i 或 lua 启用

2、脚本式

(1)将代码保存到一个以 .lua 为扩展名的文件中

(2).lua 首行添加 #!/usr/local/bin/lua,指定程序运行该文件

(3).lua 不是一个可执行文件,需要通过 chmod 设置可执行权限

3、在交互式中,运行脚本式 .lua 文件,可以使用 dofile(filename) 函数

4、连续语句之间的分隔符 ; 可选

5、表达式之间的换行不起任何作用

 

注释

1、单行注释

--注释内容

2、多行注释

--[[
    注释内容
--]]

3、取消多行注释

---[[
    注释内容
--]]

 

标识符

1、即变量名

2、Lua 定义变量名

(1)以一个字母 A 到 Z,或 a 到 z,或下划线开头

(2)后面加上 0 个或多个字母,下划线,数字(0 到 9)

3、不使用下划线 + 大写字母的标识符,因为容易与 Lua 保留字发生冲突

4、区分大小写字母

5、关键字:and、break、do、else、elseif、end、false、for、function、if、in、local、nil、not、or、repeat、return、then、true、until、while、goto

6、一般约定,以下划线开头连接大写字母,被保留用于 Lua 内部全局变量

 

算术运算符

1、+:加

2、-:减

3、*:乘

4、/:除

5、%:取余

6、^:乘幂

7、-:负号

 

关系运算符

1、==:等于

2、~=:不等于

3、>:大于

4、<:小于

5、>=:大于等于

6、<=:小于等于

 

逻辑运算符

1、and:逻辑与,&&

2、or:逻辑或,||

3、not:逻辑非,取反

 

其他运算符

1、..:连接两个字符串

2、#:一元运算符,返回字符串或表的长度

 

变量

1、全局变量无须声明,即可使用

2、在默认情况下,变量总为全局

3、如果未提前赋值,默认为 nil

4、声明一个局部变量,需要使用 local 声明

 

数据类型

1、nil:空,无效值

2、boolean:true / false

3、number:数值

4、string:字符串

5、function:函数

6、table:表

7、thread:线程

8、userdata:用户数据

 

nil

1、只有一个 nil 值

2、作用

(1)与其他所有值进行区分

(2)当想要移除一个变量时,只需要将该变量名赋值为 nil,垃圾回收会释放该变量所占用的内存

 

boolean

1、true、false

2、用作条件判断的真与假

3、在 Lua 中,只将 false 和 nil 视为假,其他的都视为真(包括 0 和空字符串)

 

number

1、Lua 5.3 版本开始,为数值格式提供两种选择

(1)integer:整型

(2)float:双精度浮点型

2、不管是整型还是双精度浮点型,使用 type() 函数获取其类型,都会返回 number

3、两者之间可以相互转换

4、具有相同算术值的整型值、浮点型值,在 Lua 语言中相等

 

string

1、使用 '' 或 "" 声明字符串

2、如果声明的字符串较长,或有多行,则可以使用 [[ ]] 声明

 

 

table

1、Lua 以一种简单、统一、高效方式,表示数组、集合、记录、其他数据结构

2、Lua 中的表本质上是一种辅助数组,除 nil 以外,可以使用任意类型的值作索引

3、例

(1)创建空表

a = {}

(2)获取值,数组下标默认从 1 开始

arr[1]
arr["X"]
arr.X

(3)同时声明索引、值

arr = {"TOM",X=10,"JERRY",Y=20,"ROSE",Z=30}

 

function

1、在 Lua 中,函数对语句和表达式进行抽象

2、定义函数

function functionName(params)
    
end

3、函数被调用时,传入参数个数与定义函数时使用参数个数不一致,Lua 会通过抛弃多余参数,将不足的参数设为 nil,调整参数的个数

4、可变长参数函数

function functionName(...)
    
end

5、函数可以返回多个值

 

thread

1、线程

2、在 Lua 中,thread 表示执行的独立线路,用来执行协同程序

 

userdata

1、用户自定义数据

2、表示一种由应用程序,或 C/C++ 语言库所创建的类型

 

if then elseif else

1、else 可选

if(布尔表达式)
    then
    --[ 在布尔表达式为 true 时执行的语句 --]
end
if(布尔表达式)
    then
    --[ 布尔表达式为 true 时执行该语句块 --]
else
    --[ 布尔表达式为 false 时执行该语句块 --]
end

2、允许嵌套 if 语句

if(布尔表达式1)
    then
    --[ 布尔表达式 1 为 true 时执行该语句块 --]
    if(布尔表达式2)
        then
        --[ 布尔表达式 2 为 true 时执行该语句块 --]
    end
end
if(布尔表达式1)
    then
    --[ 布尔表达式 1 为 true 时执行该语句块 --]
elseif(布尔表达式2)
    then
    --[ 布尔表达式 2 为 true 时执行该语句块 --]
end

 

while

1、先判断,后执行 

while(condition)
do
    statements
end

 

repeat

1、先执行,后判断,循环体至少会执行一次

repeat
    statements
until(condition)

 

for

1、数值 for 循环

(1)var 从 exp1 变化到 exp2

(2)每次变化以 exp3 为步长,递增 var,并执行一次执行体

(3)exp3 可选,如果不指定,默认为 1

for var=exp1,exp2,exp3 do  
    <执行体>  
end

2、泛型 for 循环

(1)通过一个迭代器函数,遍历所有值,类似 Java 中的 foreach

(2)i:数组索引值

(3)v:对应索引的数组元素值

(4)ipairs:Lua 提供的一个迭代器函数,用来迭代数组

(5)a:要遍历的数组

for i,v in ipairs(a) do
    循环体 
end

3、如果 key 为非数字,使用 pairs 迭代

(1)ipairs:仅遍历值,按照索引升序遍历,索引中断停止遍历,即不能返回 nil,只能返回数字 0,如果遇到 nil 则退出,它只能遍历到集合中第一个不是整数的 key

(2)pairs:能遍历集合的所有元素,即 pairs 可以遍历集合中所有 key,并且除了迭代器本身以及遍历表本身,还可以返回 nil

posted @   半条咸鱼  阅读(389)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示