安装

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 变量中调用。



其他      lua

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!