目录
特别适合用来表达或编辑数据结构、各种配置文件,其文件后缀为.yml。
1 基本语法
- 大小写敏感,空格缩进表示层级关系,禁用Tab,空格数量不重要
- # 表示注释
- 特殊符号(如冒号:)后为避免语法错误,默认加空格
2 数据类型
- 对象:键值对集合,类似python字典
- 数组:类似python列表
- 纯量:单个不可再分的值,类似C语言里的const常量。
2.1 对象
类似python字典
简单示例:
# 方式一:
key:{key1: value1, key2: value2} # 注意冒号:后有空格
# 方式二:
key:
key1: value1
key2: value2
复杂示例:
?
- key1
- key2
:
- value1
- value2
# 表示一个数组[key1, key2] = [value1, value2]
2.2 数组
以- 开头表示一个数组,类似python列表。
# 简单示例
arrayA:[value1, value2, ...]
# 复杂示例
arrayB:
-
key1: 1
key2: 2
-
key3: 3
key4: 4
# 类似python列表B = [{key1: 1, key2:2}, {key3: 3, key4: 4}]
# 上述复杂示例可以直接写成:arrayB: [{key1: 1, key2:2}, {key3: 3, key4: 4}]
复合结构示例:
languages:
- C
- C++
- Python
names:
C: C语言
yaml: 标记语言
# 等价于json代码如下:
{
languages: ['C', 'C++', 'Python'],
names: {
C: C语言
yaml: 标记语言
}
}
2.3 纯量
不可再分割的值,类似C语言里的const常量。
字符串、布尔值、整数、浮点数、Null、时间、日期等
3 引用
- & 锚点,类似创建引用对象
- * 指明引用对象
示例:
base: &base
key1: value1
key2: value2
A:
A0: 0
<<: *base
B:
B0: 0
<<: *base
# 相当于:
base:
key1: value1
key2: value2
A:
A0: 0
key1: value1
key2: value2
B:
B0: 0
key1: value1
key2: value2