table

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

这个库提供通用函数用于表/阵列操作,为其所有函数提供全球 table 变量内。table 库中大多数函数假定表表示阵列或列表。对于这些函数,表的“长度”意味着长度运算符的结果。

概要

职能

  • clear(table : table):()

    将给定表中的所有键设置为 nil

  • 返回提供的表的浅副本。

  • concat(t : Array,sep : string,i : number,j : number):string

    返回给定范围的表元素为字符串,每个元素由给定的分隔符分开。

  • create(count : number,value : Variant):table

    返回一个新表,其中包含许多实例的指定值。

  • find(haystack : table,needle : Variant,init : number):Variant

    返回第一次出现的 needlehaystack 开始于 init 的索引。

  • 使指定的表只读。

  • insert(t : Array,pos : number,value : Variant):()

    将提供的值插入到数组列的目标位置。

  • insert(t : Array,value : Variant):()

    将提供的值添加到数组列的尾部。

  • 返回 true 如果指定的表被冻结,否则返回 false 如果它未被冻结。

  • 返回提供的表的最大数字键或为零,如果表没有数字键。

  • move(src : table,a : number,b : number,t : number,dst : table):table

    从一个表复制指定范围的元素到另一个表。

  • pack(values... : Variant):Variant

    返回包含提供的值的新表。

  • remove(t : Array,pos : number):Variant

    从数组列中移除指定元素,如果可能的话,向下移动后续元素以填充空白位置。

  • sort(t : Array,comp : function):()

    使用提供的比较函数或 < 运营符排序表元素。

  • unpack(list : table,i : number,j : number):Tuple

    返回给定列表中的所有元组素为 tuple。

职能

clear

()

将给定表中所有键的值设置为 nil。这导致 # 运营商为给定的表返回 0 。维持了表阵列部分的分配容量,这使得空间的高效重复使用。


local grades = {95, 82, 71, 92, 100, 60}
print(grades[4], #grades) --> 92, 6
table.clear(grades)
print(grades[4], #grades) --> 零,0
-- 如果等级再次填充了相同数量的条目,
-- 不会发生潜在昂贵的阵列缩放
-- because the capacity was maintained by table.clear.

该函数不会删除/摧毁提供给它的表。该函数用于特定用于重复使用的表。

参数

table: table

钥匙将被清除的表。

返回

()

clone

返回提供的表的未冻结浅副本。

参数

要克隆的表。

返回

提供的表的克隆。

concat

给出一个阵列,其中所有元素都是字符串或数字,返回字符串 t[i] ... sep ... t[i+1] ... sep ... t[j]。sep的默认值为空字符串,默认值为i的值为1,默认值为j的值为#t。如果 i 大于 j,返回空字符串。

参数

将被转换为字符串的表。

sep: string

表中每个条目之间会被连接的字符串。

表结合的起始索引。

默认值:1

表结合的最后索引。

返回

create

创建一个包含给定 number 元素的阵列部分的表,可选填充给定的 value


local t = table.create(3, "Roblox")
print(table.concat(t)) --> RobloxRobloxRoblox

如果你正在插入到大型阵列表中,确定元素数的合理上限,建议使用此函数来初始化表。这可以确保表的阵列部分的内存足够大,因为缩放可能会很昂贵。对于小数量,通常不会注意到。

参数

count: number
value: Variant

返回

find

Variant

在给定的阵列表中 haystack , 找到值 needle 的第一次出现,从索引 init 或开始如果未提供的话。如果未找到值,nil 将返回。

执行了一个 线性搜索 算法。


local t = {"a", "b", "c", "d", "e"}
print(table.find(t, "d")) --> 4
print(table.find(t, "z")) --> nil,因为 z 不在表中
print(table.find(t, "b", 3)) --> nil, because b appears before index 3

参数

haystack: table
needle: Variant
init: number

返回

Variant

freeze

这个函数使指定的表只读,有效地“冻结”它在当前状态下。尝试修改冻结的表会发生错误。

这种冻结效果浅,这意味着你可以在冻结的表中写入表。要深冻一个表,在所有向下的表中递归调用此函数。

参数

要被冻结的表。

返回

冰冻的桌子。

insert

()

将提供的值插入到数组列的目标位置。

参数

被添加到的表。

pos: number

值将被插入的位置。

value: Variant

将被添加到表中的值。

返回

()

insert

()

将提供的值添加到数组列的尾部。

参数

被添加到的表。

value: Variant

将被添加到表中的值。

返回

()

isfrozen

这个函数返回 true 如果指定的表被冻结,否则返回 false 如果它未被冻结。你可以使用 table.freeze() 来冻结表。

参数

要检查的表。

返回

表是否从 table.freeze() 被冻结。

maxn

返回提供的表的最大数字键或为零,如果表没有数字键。表中的空格被忽略。

参数

返回

move

从表中复制元素 srcsrc[a]src[b] 到表 dst 开始于索引 t 。等价于分配声明 dst[t], ..., dst[t + (b - a)] = src[a], ..., src[b] .

默认值为 dstsrc 。目标范围可能与源范围重叠。

返回 dst 为了方便。

参数

src: table

来源表。

src[a] 开始复制。

复制到并包括src[b]

复制到 dst[t], ... .

dst: table

目标表。

默认值:src

返回

dst , 为了方便。

pack

Variant

返回一个新表,其中所有参数都被储存到键 1、2 等中和一个带有“n”字段的总数争议的数量。请注意,结果表可能不是序列。


local t = table.pack(1, 2, 3)
print(table.concat(t, ", ")) --> 1, 2, 3

参数

values...: Variant

返回

Variant

remove

Variant

从阵列中删除位置为 pos 的元素,返回删除元素的值。当 pos 是在 1#t 之间的整数时,它会向下移动元素 t[pos+1], t[pos+2], ..., t[#t] 并清除元素 t[#t] 。如果 pos 参数未提供,pos 默认为表的长度,移除最后一个元素。

参数

包含元素被移除的表。

pos: number

正在删除的元素的索引。

返回

Variant

sort

()

按给定的顺序排序阵列中的元素 t,从 t[1]t[#t] 。如果 comp 被提供,那么它必须是一种函数,接收两个元素,并在最后一次元素必须在第二个之前出现时返回真值。

如果 both comp(a, b)comp(b, a) 都返回 true,将抛出错误 invalid order function for sorting

如果没有提供 comp,那么使用标准 Luau 运营商 < 取而代之。

参数

comp: function

可选的比较函数,用于比较表中的元素时使用。该函数接收两个元素,如果第一个元素应在最后一行中排序前于第二个元素,应返回 true 。

默认值:nil

返回

()

unpack

返回给定列表中的元素。默认情况下,i 是 1 和 jlist 的长度。

请注意,这相同的功能也由全球 unpack() 函数提供。

参数

list: table

要解包的元素列表。

要解包的第一个元素的索引。

默认值:1

要解包的最后一个元素的索引。

默认值:#list

返回