Skip to content

YAML – 序列样式

在 YAML 中,序列(sequence)是一个有序的项集合,类似于编程语言中的列表或数组。YAML 提供了两种主要的样式来表示序列:块式(block style)和流式(flow style)。理解这些样式对于编写可读性高、结构良好的 YAML 文档至关重要。

YAML 中的集合(Collection)通常通过从零开始的连续整数进行索引,类似于数组。序列是集合的一种基本类型。

块式序列更详细,通常对于较长的列表更具可读性。块式序列中的每个项在新行开头用一个连字符和空格(- )标记。序列中的所有项必须共享相同的缩进级别。

# 行星的块式序列
planets:
- Mercury
- Venus
- Earth
- Mars

流式序列更紧凑,以内联方式书写,用方括号([])括起来。项之间用逗号和空格(, )分隔。流式适用于短列表,或者当需要将列表嵌入到使用块式可能显得繁琐的另一个结构中时。

# 行星的流式序列
planets_flow: [Mercury, Venus, Earth, Mars]

以下示例演示了块式和流式序列,以及使用显式标签(!!seq)来表示序列。虽然对于标准序列通常不需要显式标记(因为 YAML 解析器通常会自动推断类型),但它对于清晰度和特定模式要求可能很有用。

# 演示不同序列样式的示例
# 块式有序节点序列
rocky_planets: !!seq
- Mercury # 最内侧的行星
- Venus # 地球的“姐妹”行星
- Earth # 我们的家园
- Mars # 红色星球
# 流式有序节点序列
gas_giants: !!seq [Jupiter, Saturn, Uranus, Neptune] # 外行星
ice_dwarfs_flow:
- Pluto
- Eris
- Haumea

解析后,这个 YAML 将生成一个数据结构,概念上类似于以下 JSON 数据结构:

{
"rocky_planets": [
"Mercury",
"Venus",
"Earth",
"Mars"
],
"gas_giants": [
"Jupiter",
"Saturn",
"Uranus",
"Neptune"
],
"ice_dwarfs_flow": [
"Pluto",
"Eris",
"Haumea"
]
}

选择块式还是流式通常取决于可读性和上下文。块式通常更适用于顶层序列或包含许多项的列表,而流式则方便用于短小、嵌入式的序列。