1. 网络链接

  1. 数组
  2. ports = [ 8001, 8001, 8002 ]
  3. 表- 标准写法
  4. [owner]
  5. name = "Lance Uppercut"
  6. 表- 紧凑写法 (内联表)
  7. name = { first = "Tom", last = "Preston-Werner" }
  8. 表数组 - 标准写法
  9. [[products]]
  10. name = "Hammer"
  11. sku = 738594937
  12. [[products]]
  13. [[products]]
  14. name = "Nail"
  15. sku = 284758393
  16. color = "gray"
  17. 表数组 - 紧凑写法
  18. points = [ { x = 1, y = 2, z = 3 },
  19. { x = 7, y = 8, z = 9 },
  20. { x = 2, y = 4, z = 8 } ]
  21. 总结:
  22. YDZY 目前的配置文件最接近于 标准表
  23. 可在上面基础上增加 数组 等标识

3. 数据类型

  • 字符串
    • 基本字符串
    • 多行基本字符串
      • 被三引号括起来的字符串,并且允许换行
    • 字面量
      • 字面量字符串 是被单引号包含的字符串,跟基本字符串一样,它们一定是以单行出现
    • 多行字面量
  • 整数
    • 就是没有小数点的数字
    • 可以加正负号
    • 对于大整数,你可以用下划线提高可读性
    • 64位 有符号
    • 不能表示
      • 前导零是不允许的
      • 也不允许十六进制(Hex)、八进制(octal)和二进制形式
      • 诸如“无穷”和“非数字”这样的不能用一串数字表示的值都不被允许
  • 浮点数
    • 由整数部分(可能是带有加号或减号前缀的) 和 小数部分 和(或)指数部分组成的数
    • 和整数类似,你可以用下划线来提高可读性。每个下划线两边至少包含一个数字
  • 布尔值
    • 小写的true和false
  • 时间日期
    • 时间日期是RFC 3339中的时间格式
    • 1979-05-27T07:32:00Z
    • 1979-05-27T00:32:00-07:00
    • 1979-05-27T00:32:00.999999-07:00
  • 数组
    • 由方括号包括的基本单元, 忽略空格
    • 由逗号分隔。
    • 数据类型不能混用(所有的字符串均为同一类型)
    • 数组也可以多行
  • (标准)表 (哈希表 / 字典)
    • 键值对集合
    • 表格名 由方括号包裹,自成一行。 注意和数组相区分,数组里只有值
    • 表名之下,直到下一个表或文件尾(EOF)之间都是该表的键值对
    • k = v
    • 可以是裸的或由引号包括的。
      • 裸键 可能仅包含字母、数字、下划线和破折号
        • 在裸键中严禁使用点(.),因为它被用来表示嵌套表!
      • 引号键 遵循基本字符串的规则,允许你使用更广泛的键名。 除非有绝对的必要,否则最好是用裸键
    • 嵌套表
      • 可以完全不去指定父表(super-tables)。TOML知道该如何处理

  • 内联表
    • 和 表 是一回事
    • 内联表提供一种更紧凑的语法来表示表。它们可以把数据分组,避免这些数据很快变得冗长
    • 是由大括号{ 和 }括起来
    • 大括号内可以存在零个或多个逗号分隔的键值对
    • 内联表里的键值对跟标准表里的键值对形式是一样的
    • 允许所有的值类型,包括内联表
    • 写法
      • 一般以单行出现
      • 不允许换行符出现在大括号之间,除非是包含在值中的有效字符
      • 即便如此,也强烈建议不要在把内联表分成多行。如果你有这种需求,那么你应该去用标准表
  • 表数组 (双括号表)
    • 本质是数组, 数组内是 几组表, 每组用 {} 表示
    • 通过包括在 双括号内 表格名来表达
    • 使用相同双括号名的每个表都是数组中的元素。
    • 表的顺序跟书写顺序一致。
    • 没有键值对的双括号表会被当作空表
    • 你也可以在适合的地方使用内联表