安装
sudo apt-get install lua5.4
编程
交互式
lua -i
进入交互式编程
chenxiyuan@kali:~$ lua -i
Lua 5.4.0 Copyright (C) 1994-2020 Lua.org, PUC-Rio
> print("hello world!")
hello world!
脚本式
chenxiyuan@kali:~$ cat << EOF > 1.lua
> print("hello world!")
> EOF
chenxiyuan@kali:~$ lua 1.lua
hello world!
基本语法
注释
--
是单行注释;--[[]]--
是多行注释.
关键字
and
,break
,do
,else
,,elseif
,end
,false
,for
,function
,if
,in
,local
,nil
,not
,or
,repeat
,return
,then
,true
,until
,while
,goto
全局变量
变量默认是全局的,并且就算你没有进行创建并直接访问也不会报错,得到的返回值是nil
即为空。也就是说当变量值不为nil
才表示存在.
> print(a)
nil
> a=100
> print(a)
100
>
删除一个变量,把赋值为空即可.
数据类型
nil
:这个最简单,只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)。boolean
:包含两个值:false和true。number
:表示双精度类型的实浮点数。string
:字符串由一对双引号或单引号来表示。function
:由C或Lua编写的函数。userdata
:表示任意存储在变量中的C数据结构。thread
:表示执行的独立线路,用于执行协同程序。table
:Lua 中的表(table)其实是一个”关联数组”(associative arrays),数组的索引可以是数字、字符串或表类型。在 Lua 里,table 的创建是通过”构造表达式”来完成,最简单构造表达式是{},用来创建一个空表。
nil
nil
:空值
> print(type(x))
nil
boolean
boolean
:布尔值,true和false,nil等同false,其他都视为true,0也是true
> if 0 then
>> print("0 is true")
>> else
>> print("0 is false")
>> end
0 is true
number
number
:数字默认双精度double型
string
string
:字符串,双引号或单引号来表示,[[]]
表示换行文本,..
可以拼接字符串
> a=[[c
>> a
>> t]]
> print(a)
c
a
t
> print("a".."b")
ab
> print(125 .. 555)
125555
table
table
:表,用{}
来构造,是一个关联数组,如果没有key,默认从1开始索引。
> table1 = {"a","b","c"}
> print(table1[1])
a
table有以下几个方法
table.insert(数组,键,值)
table.remove(数组名,键)
table.sort(数组,排序规则
function
function
:函数
> function a()
>> print("abc")
>> end
> a()
abc
thread
thread
:线程。在 Lua 里,最主要的线程是协同程序(coroutine)。它跟线程(thread)差不多,拥有自己独立的栈、局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
线程跟协程的区别:线程可以同时多个运行,而协程任意时刻只能运行一个,并且处于运行状态的协程只有被挂起(suspend)时才会暂停。
userdata
userdata
:自定义类型。userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语言库所创建的类型,可以将任意 C/C++ 的任意数据类型的数据(通常是 struct 和 指针)存储到 Lua 变量中调用。
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!