注意:该页面为保留旧有翻译而留下的,新文档并没有该页面,请注意甄别。新的文档可以在 “基础” 部分找到,不过暂未未完全翻译完毕。Typst 非官方中文交流 QQ 群:793548390
Warning: the Chinese document is a community-driven non-official document, there may be mistranslation, omission or outdated problems, please refer to the official website documentation.
Typst 中文文档

array

一个值的序列。

你可以通过把逗号分隔的数值序列放在括号里来构造一个数组。 这些值不一定是相同的类型。

你可以用 .at() 方法访问和更新数组中的一项。 索引是以零为基础的,负数的索引会循环到数组的末端。 你可以用 for 循环来迭代一个数组。 数组可以用 + 运算符相加,连接在一起,并可与整数相乘。

注意: 一个长度为 1 的数组需要一个尾部的逗号,如 {1,)。 这是为了区别于简单的括号表达式,如 (1 + 2) * 3。 空数组为 ()

Example

#let values = (1, 7, 4, -3, 2)

#values.at(0) \
#(values.at(0) = 3)
#values.at(-1) \
#values.find(calc.even) \
#values.filter(calc.odd) \
#values.map(calc.abs) \
#values.rev() \
#(1, (2, 3)).flatten() \
#(("A", "B", "C")
    .join(", ", last: " and "))
Preview

方法
方法是可用于该类型的一系列函数,可以使用 "." 操作符调用它们。

len method

数组的长度。

value.len(
) -> integer

first method

返回数组中的第一项。 可以用在赋值运算符的左边。 如果数组是空的,则失败并出现错误。

value.first(
) -> any

last method

返回数组中的最后一项。 可以用在赋值运算符的左边。 如果数组是空的,则失败并出现错误。

value.last(
) -> any

at method

返回数组中指定索引位置的项。可以在赋值的左侧使用它。 如果索引超出范围,则返回默认值;如果没有指定默认值,则会报错。

value.at() -> any

index
integer
必需参数位置参数
位置参数按顺序传入,不带名称。

要检索项的索引位置。

default
any

如果索引超出范围,则返回的默认值。

push method

在数组末尾添加一个值。

value.push() ->

value
any
必需参数位置参数
位置参数按顺序传入,不带名称。

要插入到数组末尾的值。

pop method

从数组中移除并返回最后一个项。如果数组为空,则会报错。

value.pop(
) -> any

insert method

在数组的指定索引位置插入一个值。如果索引超出范围,则会报错。

value.insert() ->

index
integer
必需参数位置参数
位置参数按顺序传入,不带名称。

要插入项的索引位置。

value
any
必需参数位置参数
位置参数按顺序传入,不带名称。

要插入项的值。

remove method

从数组中删除指定索引位置的值,并将其返回。

value.remove() -> any

index
integer
必需参数位置参数
位置参数按顺序传入,不带名称。

要删除项的索引位置。

slice method

提取数组的切片。如果起始索引或结束索引超出范围,则会报错。

value.slice() -> array

start
integer
必需参数位置参数
位置参数按顺序传入,不带名称。

起始索引(包括在内)。

end
integer
位置参数
位置参数按顺序传入,不带名称。

结束索引(不包括在内)。如果省略,则提取从起始索引到数组末尾的整个片段。

count

要提取的项数。这相当于将 start + count 作为结束位置。与结束索引互斥。

contains method

判断数组是否包含指定的值。

这个方法还有特殊的语法:你可以写成 2 in (1, 2, 3) 而不是 (1, 2, 3).contains(2)

value.contains() -> boolean

value
any
必需参数位置参数
位置参数按顺序传入,不带名称。

要搜索的值。

find method

搜索满足给定函数返回 true 的项,并返回第一个匹配的结果,如果没有匹配则返回 none

value.find() -> anynone

searcher
function
必需参数位置参数
位置参数按顺序传入,不带名称。

应用于每个项的函数。必须返回一个布尔值。

position method

搜索满足给定函数返回 true 的项,并返回第一个匹配的索引,如果没有匹配则返回 none

value.position() -> integernone

searcher
function
必需参数位置参数
位置参数按顺序传入,不带名称。

应用于每个项的函数。必须返回一个布尔值。

filter method

生成一个新数组,只包含原始数组中满足给定函数返回 true 的项。

value.filter() -> array

test
function
必需参数位置参数
位置参数按顺序传入,不带名称。

应用于每个项的函数。必须返回一个布尔值。

map method

使用给定函数将原始数组中的所有项进行转换,生成一个新数组。

value.map() -> array

mapper
function
必需参数位置参数
位置参数按顺序传入,不带名称。

应用于每个项的函数。

enumerate method

返回一个新数组,其中包含值及其索引。

返回的数组由形如长度为 2 的数组的 (index, value) 对组成。 可以使用 let 绑定或 for 循环对其进行分解

value.enumerate(
) -> array

zip method

将两个数组进行合并。 如果两个数组长度不相等,它将仅合并到较小数组的最后一个元素,并忽略剩余的元素。 返回值是一个数组,其中每个元素又是一个大小为 2 的数组。

value.zip() -> array

other
array
必需参数位置参数
位置参数按顺序传入,不带名称。

应该与当前数组进行合并的另一个数组。

fold method

使用累加器函数将所有项折叠成一个单一的值。

value.fold() -> any

init
any
必需参数位置参数
位置参数按顺序传入,不带名称。

用于初始化的初始值。

folder
function
必需参数位置参数
位置参数按顺序传入,不带名称。

折叠函数。必须具有两个参数:一个用于累加值,一个用于项。

sum method

对所有项进行求和(适用于任何可相加的类型)。

value.sum() -> any

default
any

如果数组为空,应该返回什么。如果数组可以为空,则必须设置该值。

product method

计算所有项的乘积(适用于任何可相乘的类型)。

value.product() -> any

default
any

如果数组为空,需要返回什么。如果数组可以为空,则必须设置该值。

any method

判断给定的函数是否对数组中的任何项返回 true

value.any() -> boolean

test
function
必需参数位置参数
位置参数按顺序传入,不带名称。

对每个项应用的函数。该函数必须返回一个布尔值。

all method

判断给定的函数是否对数组中的所有项返回 true

value.all() -> boolean

test
function
必需参数位置参数
位置参数按顺序传入,不带名称。

对每个项应用的函数。该函数必须返回一个布尔值。

flatten method

将所有嵌套数组合并为一个扁平的数组。

value.flatten(
) -> array

rev method

以相反的顺序返回一个新数组,但其中包含相同的项。

value.rev(
) -> array

join method

将数组中的所有项合并为一个项。

value.join() -> any

separator
any
位置参数
位置参数按顺序传入,不带名称。

在数组的每个项之间插入一个值。

last
any

最后两个项之间的替代分隔符。

sorted method

返回一个具有相同项,且排好序的新数组。

value.sorted() -> array

key

如果给定,则将此函数应用于数组中的元素,以确定排序的键。