当前位置: 首页 > 知识库问答 >
问题:

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

曹沛
2023-03-14

所以我刚刚开始使用YAML文件而不是application.properties,因为它更具可读性。我在YAML文件中看到它们以---开头。我谷歌了一下,找到了下面的解释。

YAML使用三个破折号(“--”)将指令与文档内容分开。如果没有指令,这也可以作为文档开始的信号。

此外,我尝试了一个没有---的示例,并理解拥有它们不是强制性的。

我想我对指令和文档没有清楚的理解。谁能用一个简单的例子解释一下?

共有2个答案

贡英华
2023-03-14

如果您没有以指令开始您的YAML,则不必强制使用它们。如果是这样,你应该使用它们。

我们来看看留档

3.2.3.4. 指令

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

这方面的一个示例也可以在指令YAML的留档中找到

%YAML 1.2 # Attempt parsing
           # with a warning
---
"foo"
易流觞
2023-03-14

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

>

  • 指示文件在指令之后开始,即根据当前规范的%YAML%标记行。例如:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    

    当您在同一个流中有多个yaml文档(例如,一个yaml文件)时,要发出文档开始的信号:

    doc 1
    ---
    doc 2
    

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

    doc 1
    ...
    %TAG !bar! !bar-types/
    ---
    doc 2
    

    该规范适用于yaml解析器实现。然而,我发现从用户角度来看,这篇文章更容易阅读。

  •  类似资料:
    • 问题内容: 如何在shell中重复n次字符?我已经阅读并尝试过此操作,但这不适用于。它引发错误。以下是我使用的确切命令: 原始发布行: 我还尝试通过转义来转义,但在这种情况下,它会重复n次。 问题答案: 这将引发错误: 在以下情况下可以正常工作: 对于其他外壳,请尝试: 问题是期望启动一个选项。在这种情况下,在Unix / POSIX实用程序中很常见,这表明不要有更多选择。

    • 问题内容: 我要备份数据库时出现错误 有什么办法可以用表名(temp_01-01-000001)解决这个问题。 问题答案: 您可以编辑文件/system/database/drivers/mysql/mysql_utility.php的第132行 从: 至:

    • 问题内容: 过去,我一直使用下划线在HTML中定义 类 和 id 属性。在过去的几年中,我改用破折号,主要是为了使自己适应社区中的趋势,而不一定是因为这对我来说很有意义。 我一直认为破折号有更多弊端,但我看不出这样做的好处: 代码完成和编辑 大多数编辑器都将破折号视为单词分隔符,因此我无法浏览所需的符号。假设课程为“ ”,我必须自动完成“ ”,输入连字符,然后完成“ ”。 带下划线的“ ”被视为一

    • 问题内容: 我试图使我的git仓库pip可安装。为此,我正在重组存储库以遵循正确的约定。通过查看其他存储库,我的理解是,我应该将所有源代码放在与存储库名称同名的程序包中。例如,如果调用了我的存储库,则源代码将全部放入一个也称为的包中。 我的存储库中带有连字符以提高可读性:例如。因此,如果我想为其包装一个具有相同名称的包装,则其中也将带有连字符。在本教程中,它对python软件包名称说“不要使用连字

    • 问题内容: 我开始学习一些JavaScript,并且了解在命名标识符时不允许使用破折号。但是,在CSS中,ID和类通常使用破折号。 在CSS中使用破折号是否会干扰javascript交互?例如,如果我要使用。我已经尝试了一些使用getElementByID并将破折号作为div ID的名称的示例,并且它可以工作,但是我不确定在所有其他情况下是否都是这种情况。 问题答案: 在ID(或类名,如果您选择的

    • 问题内容: 我有yaml文件的片段: 但我无法使用方法名称创建pojo 有什么方法可以解析此类Yaml文件? 问题答案: 您可以传递自定义PropertyUtils来处理此类情况