Skip to content

4.4.注释及空白

龙腾道 edited this page Sep 30, 2021 · 1 revision

注释

  # 表示该行后续的内容为注释(显然不包括字符串里的)①:

["#这不是注释"."#这亦非注释"]#这是注释

#这是注释

"#这不是注释" = """#这不是注释
#这不是注释
"""#这是注释

"#这亦非注释" = [#这都是注释
#这都是注释
#这都是注释
]#这都是注释

① TOML 1.0 明确指出了,即便是在注释中,也不允许出现除 Tab 以外的 Unicode 控制字符。由于其它位置从未允许过,所以至此终于可以简单地同一陈述:整个 TOML 文件中都不能出现除 Tab 和换行以外的任何控制字符。

空白

  TOML 允许在语法标记外使用空格或 Tab(以及在允许换行的地方敲更多的换行 ②),来使内容更加美观可读,但它不会改变文件解析的结果。

② TOML 0.4 开始明确定义只有 LF(Linux、新 Mac OS X 等系统里的换行符)或 CR+LF(Windows 等系统里的换行符)才是换行。这意味着,单独出现的 CR(老 Mac OS 9 系统里的换行符)以及 Unicode 额外定义的 U+2028 行分隔符、U+2029 段分隔符,在 TOML 里算不算换行的问题,不再模棱两可。

# 不用的情况:
[a]#
x=1
y=2
[[a.b]]
a=+1.0e1
bbb_bbb='''
        bbb
     bbb
'''
[[a.b]]
c={x=1,y=2}
d=[1,2,3]
e=[['x'],['y']]
[[a.b]]
# 善用的情况:

[a] #

x = 1
y = 2

[[a.b]]

a = +1.0e1
bbb_bbb = '''
        bbb
     bbb
'''

[[a.b]]

c = { x = 1, y = 2 }
d = [ 1, 2, 3 ]
e = [
  [ 'x' ],
  [ 'y' ],
]

[[a.b]]
             # 滥用的情况:
[    a    ]  #
  x = 1

  y = 2

  [[ a. b ]]
    a       = +1.0e1
    bbb_bbb = '''
        bbb
     bbb
'''
  [[ a .b ]]
    c = {x  =1  ,y=  2}

d = [ 1 ,2
	,3
]
e = [

['x']

,['y']]
  [[ a . b ]]
# 错用的情况(下述所有的空格写法都会造成语法错误):
[ [a.b] ]
a=+ 1 . 0 e 1
bbb _ bbb=1970 - 01 - 01   00 : 00 : 00 Z

  简单来说,除非是包含换行的内联数组,否则不要进行缩进。
  缩进子小节名会使得它们反而对不齐(因为路径本来就始终从根表开始),而缩进键值对会使得层级关系更加混乱、与相应小节名的关系也不再紧密、多行字符串的后续行位置变得糟糕。
  毕竟,避免狂敲缩进,是 TOML 语法最大的优点和特色。