典范:
Y | N
正则表达式:
y | Y |是|是| YES | n | N | no | No | NO | true | True | TRUE | false | False | FALSE | on | On | ON | off | Off | OFF
定义:
表示真/假值.在没有本机布尔类型(例如C)的语言中,通常绑定到本机整数类型,使用一个用于true,使用零用于false.
规范形式:
无论是
true或false.
这是否意味着1.1中的所有替代形式应该在1.2中被解释为反序列化中的字符串(而不是布尔值)?
你问过两个不同的问题,所以我会依次回答:
在YAML 1.2中,"on"和"off"应该被解释为真或假吗?
不,标量on和off应被解释为字符串(tag:yaml.org,2002:str).
这是否意味着1.1中的所有替代形式应该在1.2中被解释为反序列化中的字符串(而不是布尔值)?
其中有些是肯定的,有些只是有时候.
值得注意的是,您引用的YAML 1.2规范部分来自10.2 JSON Schema.根据其介绍:
该JSON模式是最现代化的计算机语言的最小公分母,并允许解析JSON文件.因此,YAML处理器应该支持这种模式,至少作为一种选择.强烈建议其他模式应该基于它.
实际上,在使用JSON模式时,只有标量true并且false是隐式boolean(tag:yaml.org,2002:bool)值.
但是,规范建议默认情况下YAML解析器使用Core架构,而不是JSON架构.Core架构是"JSON架构的扩展,允许更多人类可读的相同类型的表示."
当使用核心架构,标量true,True,TRUE,false,False,和FALSE都是布尔值.
在 YAML 1.2 规范中不再提及它们,但我不记得它在任何地方说明了它们被删除的原因以及它们是。然而,在实际情况下,这些额外的“布尔值”引起了混乱,这就是为什么它们可能从规范中删除的原因。
在 ruamel.yaml 中,我升级了 PyYAML(主要是 YAML 1.1 并支持 Yes/No/On/Off )如果 YAML 文件被指定为 YAML 1.1(使用加载参数,或起跑线%YAML 1.1。然后这些标量被解释为字符串。我还没有听到任何人抱怨,所以我认为我做的是正确的(即每个人都期望基于 1.2 规范)事情;-)。
| 归档时间: |
|
| 查看次数: |
3149 次 |
| 最近记录: |