【笔记】Toml学习笔记

前言

Toml学习笔记
Toml的顶层只能是对象,而JSON的顶层可以是数组

注释

1
# 注释

定义键值对

1
key = "value"
  • 键名中没有特殊字符可以省略键名的双引号
1
key = "value"

定义有层级关系的键值对

1
key.key = "value"
  • 已经被定义为父级的键,不能再为其赋值,只能继续为其子级赋值

多级

1
key.key.key = "value"

值的数据类型

字符串

包哈转义字符的字符串

  • 通过一对双引号定义的字符串
1
key = "value1\nvalue2"
1
2
value1
value2
多行字符串
  • 通过三对双引号定义的字符串
  • 要在三个双引号的下一行输入需要定义的值,而非Python一样在三个双引号后面定义输出的值
  • 文本中的转义字符会被转义
1
2
3
4
key = """
value1\n
value2
"""
1
2
3
value1

value2
去除行末的空白字符和换行符
  • \后面的空白字符和换行符都会被去除
1
2
3
4
key = """
value1\
value2\
"""
1
value1value2

不包含转义字符的字符串(字面量字符串)

  • 通过一对单引号定义
1
key = 'value1\nvalue2'
1
value1\nvalue2
多行字符串
  • 通过三对单引号定义的字符串
  • 要在三个单引号的下一行输入需要定义的值,而非Python一样在三个单引号后面定义输出的值
  • 文本中的转义字符不会被转义
  • 可以在字符串中出现单引号
1
2
3
4
key = '''
value1\n'
value2
'''
1
2
value1\n'
value2

数值

1
key = 0

布尔值

1
key = true
1
key = false

数组

  • 数组可以跨行
  • 支持尾部逗号
1
2
3
4
key = [
0,
0,
]

嵌套数组

1
2
3
4
5
6
key = [
[
0,
0,
]
]

  • 一种语法糖,用于替代传统写法的有层级关系的键值对
1
2
[table]
key = "value"
  • 等同于下面的写法
1
table.key = "value"
  • 与有层级关系的键值对相同,表名也不能重复定义

多级表

1
2
[table.table]
key = "value"
  • 等同于下面的写法
1
table.table.key = "value"

内联表

  • 通过一组大括号定义内联表,内联表必须写在同一行
1
2
[table.table]
key = { key = "value" }
  • 等同于下面的写法
1
table.key.key = "value"

表数组

  • 相当于对象数组
  • 表数组可以有多个相同表名的表,因为都包含在同一数组
1
2
3
4
[[table]]
key1 = "value"
[[table]]
key2 = "value"
  • 等同于下面的写法
1
2
3
4
table = [
{ key1 = "value" },
{ key2 = "value" },
]

表下面内容无法提前一级

  • 以下两种写法含义完全不一样
1
2
3
key2 = "value"
[table]
key1 = "value"
1
2
3
[table]
key1 = "value"
key2 = "value"

表下面的内容再定义表是同级而非父子级

  • 以下两种写法含义完全不一样
1
2
3
[table1]
[table2]
key = "value"
1
2
[table1.table2]
key = "value"

完成

参考文献

哔哩哔哩——EfficLab实验室