帮助:模块/表

来自心百科,心灵的百科全书
< 模块
Lua与模块
Lua.jpg
基础
1.Hello world
2.替换模板入门
3.function的调用
4.HTML的渲染
进阶
1.数据类型
2.字符串(string)
3.变量(variable)
4.运算符(operator)
5.分支结构(if)
6.循环结构(for/while/iterator)
7.函数(function)
8.表(table)
9.数组(table)
10.模板参数(args)
11.跨模块调用(require)
12.MongoDB函数
使用VS Code维护代码

table是Lua中的一种数据类型,是一种功能非常丰富的数据类型。

基本概念

Lua的table是一种关联型的数组,每个值都有一个与之对应的索引,索引一般使用字符串(string)或是数值(number)。

table并不固定大小,随着添加的索引越来越多,会自动扩容。

在Lua中,table除了用来当做其他变成语言中的list(列表),dictionary(字典)或是array(数组)等数据类型外,还用来解决模块、包(package)和对象(object)这些功能的实现。

例如string库,实际上就是一个名叫string的table,而string.find函数,实际上是在这个table中,用find做索引对应到的那个函数。

<callout>需要注意的是,Lua的表从1开始索引,而不是0</callout>

基本使用

以下为table的最基本使用方法:

-- 通过给变量赋值 {} 来初始化一个table
-- 所有table使用前必须初始化
local test = {}

-- 通过[ ]选中一个索引进行赋值
test[1] = 'Hello'
test['name'] = 'Huiji'

-- 通过赋值 nil 删除一个索引对应的内容
test[1] = nil

-- 通过赋值 nil 删除table
test = nil

表的索引

这里给定一个table

local table = {
  ['name'] = 'hello',
  ['age'] = 18,
  ['job'] = 'unkonwn'
}

那么:

  • table['name']的值就是'hello'(key是‘name’的值)
  • table[1]的值是nil(因为表中没有以[1]为索引的内容)

如果表中间有嵌套

local table = {
  ['name'] = { ['first'] = 'hello', ['second'] = 'world' },
  ['age'] = 18,
  ['job'] = 'unkonwn'
}

那么:

  • table['name']['first']的值是'hello'

常见形态

在Mediawiki的Lua中,table一般用于:

形式 说明
数组 数组形式的table索引是从1开始,依次递增的自然数索引。数组类的table会有许多额外的特性,请参考数组
字典 字典形式的table索引是比较随意的值
模块 每个模块内容页(命名空间为Module模块),都需要对应一个table
对象 该内容不适合初学者 用于面向对象编程中,对象object的实现。由于比较深入了,如有兴趣请自行参阅其他文档,本帮助中不进行详解。

获取值

如果想循环获取table中的索引和值的话,可以使用循环结构