零基础学lua第七天—table中

一、前言

前面我们讲过了table最基础的一些数据结构的使用和方法的使用,今天我们来讲讲其它数据结构的实现以及lua中的模块和包的概念。

二、集合

我们学过Python都知道,集合是可以去除重复数据的,因此首先我们需要数据去重。然后集合是可以进行交并差的运算的,不过这里由于我们还没有学到元表和元方法,因此目前还无法实现给table添加方法并使用,因此这里我们只实现它的数据去重功能,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_数据去重

这样就实现了数据去重。

三、队列

队列好比栈,先来看看进栈的实现方法,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_lua_02

我们分为左边和右边的区别,可以直接指定位置和值,若是左边进栈,就在指定的位置的前一位插入,若是右边进栈,则在指定位置的后一位插入;再来看看出栈,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_lua_03

这里我们没有考虑数据进栈出栈时数据的位置是否越栈,因为还没学到异常和错误处理的关系,等后面学了大家加进去就可以了。

四、模块

lua是由变量、函数常量等已知元素组成的table,因此模块就等于是一个table。下面我们来创建一个模块,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_进栈_04

我们声明了一个模块,并且模块中有常量和函数,而且我们还能看到模块是由table变成的。

五、调用模块

写完了模块当然要调用啦,调用的方法有三种,如下:

1.require

该方法会搜索目录来加载同一个模块,并且不重复,只不过要想让require检索到lua模块我们需要设置它的模块路径,如下:

package.path="C:/Users/Administrator/Desktop/?.lua"

然后我们就可以引入模块了,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_进栈_05

2.dofile

前面的方法虽然效率高但是比较麻烦,我们可以直接引入文件,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_数据去重_06

不过dofile会在每次载入模块文件的时候都执行,因此它的效率比较低。

3.loadfile

如果你想再载入模块文件的时候不执行文件的话了,我们就可以使用loadfile,如下:

lua table 非数值索引 怎么删除 lua中table去除重复元素方法_数据去重_07

此时读取的模块文件是被当成了一个函数被返回了。

六、总结

纵观本文,发觉lua中的table实在是太重要了,好多实现都必须使用table,下篇文章我们将完结table的所有知识点。