forked from toml-lang/toml
-
Notifications
You must be signed in to change notification settings - Fork 42
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 语法最大的优点和特色。
© 2022 龙腾道