为什么---(3个破折号/连字符)在yaml文件中?

And*_*ndy 70 yaml

所以我刚开始使用YAML文件而不是application.properties因为它更具可读性.我在YAML文件中看到他们开始---.我用Google搜索并找到了以下解释.

YAML使用三个破折号("---")将指令与文档内容分开.如果没有指令,这也用于表示文档的开始.

此外,我尝试了一个没有的样本,---并且理解它不是强制性的.

我想我并没有清楚地了解directivedocument.有人可以用一个简单的例子解释一下吗?

Yas*_*jaj 32

如果您没有开始YAML使用指令,则不必强制使用它们.如果是这种情况,您应该使用它们.

我们来看看文档

3.2.3.4.指令

每个文档可以与一组指令相关联.指令具有名称和可选的参数序列.指令是YAML处理器的指令,并且所有其他表示细节都不会反映在YAML序列化树或表示图中.此版本的YAML定义了两个指令,"YAML"和"TAG".所有其他指令都保留给YAML的未来版本.

其中一个例子也可以指令文档中找到YAML

%YAML 1.2 # Attempt parsing
           # with a warning
---
"foo"
Run Code Online (Sandbox Code Playgroud)


Yi *_* Ou 24

正如您已经发现的那样,三个破折号---用于表示文档的开头,即:

  1. 以用信号通知文件开始指令后,即%YAML%TAG根据当前规范线.例如:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    
    Run Code Online (Sandbox Code Playgroud)
  2. 当您在同一个流中多个yaml文档时,如果是yaml文件,则表示文档开始:

    doc 1
    ---
    doc 2
    
    Run Code Online (Sandbox Code Playgroud)

    如果doc 2有一些先前的指令,那么我们必须使用三个点...来指示解析器的doc 1的结尾(以及doc 2之前的潜在指令的开始).例如:

    doc 1
    ...
    %TAG !bar! !bar-types/
    ---
    doc 2
    
    Run Code Online (Sandbox Code Playgroud)

该规范适用于yaml解析器实现者.但是,我发现从用户的角度来看这篇文章更容易阅读.

  • 设计 YAML 的人们是否曾经停下来思考他们是否应该实现这个? (2认同)