lua 常用数据类型总结

前言

在上一篇我们说明了如何基于centos7系统快速搭建lua,本篇将接着说明lua常用的数据类型以及基础语法

关键字

下列是 Lua 的关键字,大家在定义常量、变量或其他用户自定义标识符都要避免使用以下这些关键字:

bd8283d0f33d45eeb5c9913efe6a659b.png

一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION) 被保留用于 Lua 内部全局变量。这个也是上面我们不建议这么定义标识 符的原因。

运算符

Lua 中支持的运算符有算术运算符、关系运算符、逻辑运算符、其他运算符

算术运算符:

+ 加法

- 减法

* 乘法

/ 除法

% 取余

^ 乘幂

- 负号

例如:

10+20 —> 30

20-10 —> 10

10*20 —> 200

20/10 —> 2

3%2 —> 1

10^2 —> 100

-10 —> -10

633b8b0ba1454d868a293afbcbd5be5c.png

关系运算符

== 等于

~= 不等于

大于

< 小于

= 大于等于

<= 小于等于

例如

10==10 —>true

10~=10 —>false

20>10 —>true

20<10 -->false

20>=10 —>true

20<=10 —>false

逻辑运算符

and 逻辑与 A and B &&

or 逻辑或 A or B ||

not 逻辑非 取反,如果为 true, 则返回 false !

逻辑运算符可以作为 if 的判断条件,返回的结果如下 :

A = true

B = true

A and B —>true

A or B —>true

not A —>false

A = true

8ad5d19403c94fbfb249298bce655f53.png

其他运算符

.. 连接两个字符串

# 一元预算法,返回字符串或表的长度

例如 :

“HELLO “..”WORLD” —>HELLO WORLD

#“HELLO” —>5

全局变量 & 局部变量

在 Lua 语言中,全局变量无须声明即可使用。在默认情况下,变量总是认为是全局的,如果未提前赋值,默认为nil:

21f92482aee1462b9062b57f1b5632b1.png

要想声明一个局部变量,需要使用 local 来声明

#

Lua**数据类型**

Lua 有 8 个数据类型

nil( 空,无效值 )

boolean( 布尔, true/false)

number( 数值 )

string( 字符串 )

function( 函数 )

table (表)

thread( 线程 )

userdata (用户数据)

可以使用 type 函数测试给定变量或者的类型:

print(type(nil)) —>nil

print(type(true)) —> boolean

print(type(1.1*1.1)) —> number

print(type(“Hello world”)) —> string

print(type(io.stdin)) —>userdata

print(type(print)) —> function

print(type(type)) —>function

print(type{}) —>table

print(type(type(X))) —> string

1f651db77dbf4358bd056ec506339397.png

nil

nil 是一种只有一个 nil 值的类型,它的作用可以用来与其他所有值进行区分,也可以当想要移除一个变量时,只需要将该变量名赋值为nil, 垃圾回收就会会释放该变量所占用的内存

boolean

boolean 类型具有两个值, true 和 false 。 boolean 类型一般被用来做条件判断的真与假。在Lua 语言中,只会将 false 和 nil 视为假,其他的都视为真,特别是在条件检测中0 和空字符串都会认为是真,这个和我们熟悉的大多数语言不太一样

number

在 Lua5.3 版本开始, Lua 语言为数值格式提供了两种选择 :integer( 整型 )和flfloat( 双精度浮点型 )[ 和其他语言不太一样, flfloat 不代表单精度类型 ] 。

数值常量的表示方式:

4 —>4

0.4 —>0.4

4.75e-3 —>0.00475

4.75e3 —>4750

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

type(3) —>number

type(3.3) —>number

所以它们之间是可以相互转换的,同时,具有相同算术值的整型值和浮点型值在Lua 语言中是相等

string

Lua 语言中的字符串即可以表示单个字符,也可以表示一整本书籍。在Lua语言中,操作 100K 或者 1M 个字母组成的字符串的程序很常见

可以使用单引号或双引号来声明字符串

a = “hello”

b = ‘world’

print(a) —>hello

print(b) —>world

如果声明的字符串比较长或者有多行,则可以使用如下方式进行声明

html = [[





Lua-string





Lua



]]

table

table 是 Lua 语言中最主要和强大的数据结构。使用表, Lua 语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他很多数据结构。 Lua 语言中的表本质上是一种辅助数组。这种数组比 Java 中的数组更加灵活,可以使用数值做索引,也可以使用字符串或其他任意类型的值作索引( 除 nil 外 ) 。

创建表的最简单方式:

a = {}

创建数组:

我们都知道数组就是相同数据类型的元素按照一定顺序排列的集合,那么使用table 如何创建一个数组呢 ?

arr = {“TOM”,”JERRY”,”ROSE”}

要想获取数组中的值,我们可以通过如下内容来获取 :

print(arr[0]) nil

print(arr[1]) TOM

print(arr[2]) JERRY

print(arr[3]) ROSE

c3d83b25026744a5ab66c3ce8352f07b.png

从上面的结果可以看出来,数组的下标默认是从 1 开始的。所以上述创建数组,也可以通过如下方式来创建

arr = {}

arr[1] = “TOM”

arr[2] = “JERRY”

arr[3] = “ROSE”

上面我们说过了,表的索引即可以是数字,也可以是字符串等其他的内容,所以我们也可以将索引更改为字符串来创建

arr = {}

arr[“X”] = 10

arr[“Y”] = 20

arr[“Z”] = 30

5e2f32bfae2e401b92cbff8a6ec9f9f6.png

当然,如果想要获取这些数组中的值,可以使用下面的方式

方式一

print(arr[“X”])

print(arr[“Y”])

print(arr[“Z”])

方式二

print(arr.X)

print(arr.Y)

print(arr.Z)

当前table的灵活不进于此,还有更灵活的声明方式

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

如何获取上面的值 ?

TOM : arr[1]

10 : arr[“X”] | arr.X

JERRY: arr[2]

20 : arr[“Y”] | arr.Y

ROESE?

#

function

在 Lua 语言中,函数( Function )是对语句和表达式进行抽象的主要方式。

定义函数的语法为:

function functionName(params)

end

函数被调用的时候,传入的参数个数与定义函数时使用的参数个数不一致的时候,Lua 语言会通过 抛弃多余参数和将不足的参数设为 nil 的方式来调整参数的个数;

d70698ee1c134059a3a1d1ecdce93e57.png

可变长参数函数

function add(…)

a,b,c=…

print(a)

print(b)

print(c)

end

add(1,2,3) —> 1 2 3

函数返回值可以有多个,这点和 Java 不太一样

function f(a,b)

return a,b

end

x,y=f(11,22) —> x=11,y=22

thread

thread 翻译过来是线程的意思,在 Lua 中, thread 用来表示执行的独立线路,用来执行协同程序

userdata

userdata 是一种用户自定义数据,用于表示一种由应用程序或 C/C++ 语 言库所创建的类型

发表评论

表情:
评论列表 (有 0 条评论,37人围观)

还没有评论,来说两句吧...

相关阅读

    相关 lua数据类型

    数据类型 lua是动态类型语言。变量不要类型定义,只需要为变量赋值。值可以存储在变量中,作为参数或者结果返回 lux有八种基本类型: <table> <thead

    相关 Lua 数据类型

    Lua是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua中有8个基本类型分别为:nil、boolean、number、

    相关 数据类型

    一、varchar(10)和char(10)的区别: varchar(10):可变长度,表示该列最多可以存储10个字节,如果存储不够10个字节,则会在存储时自动计算一下实际的

    相关 Lua--数据类型

    Lua数据类型 Lua 是动态类型语言,变量不要类型定义,只需要为变量赋值。 值可以存储在变量中,作为参数传递或结果返回。 Lua 中有 8 个基本类型分别为:`ni