什么是 YAML

YAML 是一种数据序列化言语,一般用于编写装备文件。YAML 代表另一种符号言语YAML 不是符号言语(递归首字母缩写词),YAML 一般用于数据,而不是文档。YAML 还是一种盛行的编程言语,因为它易于阅览且易于理解。它还能够与其他编程言语结合运用。

什么是 KCL

Kusion 装备言语 (KCL)是一种开源的基于约束的记载以及函数言语。KCL 经过老练的编程言语技术和实践改善很多杂乱装备的编写,致力于环绕装备构建更好的模块化、可扩展性和稳定性,更简单的逻辑编写、快速的自动化和杰出的生态扩展性。

您能够运用 KCL 来

  • 生成 JSON、YAML 等静态装备数据或与现有数据集成。
  • 运用 Schema 建模减少装备数据中的样板文件。
  • 为装备数据界说规则约束并自动验证它们。
  • 经过梯度自动化方案无副作用地安排、简化、统一和办理大型装备。
  • 运用阻隔的装备块以可扩展的办法办理大型装备。
  • 用作平台工程编程言语,经过Kusion Stack交付现代应用程序。

KCL 言语与 YAML 的字符串有什么差异

1. YAML 字符串运用单引号和双引号的差异是什么?

  • YAML 双引号字符串是唯一能够表达任意字符串的款式,经过运用 \ 转义字符,比方运用 \" 转义双引号 ",运用 \\ 转义反斜杠 \,并且能够运用单个反斜杠 \ 作为双引号字符串的续行符
  • YAML 单引号字符串与 YAML 双引号字符串不同的是能够自由地运用 \" 而不需要转义,但是运用两个单引号 '' 转义单引号 ' 字符

比方关于如下的例子,三个字符串变量的内容是相同的

string1: 'here '' s to "quotes"'
string2: "here's to \"quotes\""
string3: here's to "quotes"

因而,KCL 输出 YAML 字符串的战略是当字符串内容呈现单引号时,优先输出无引号字符串或双引号字符串,其他状况输出单引号字符串以防止理解上的担负。

更多细节可参阅: YAML 标准 v1.2

2. YAML 中呈现的 | – + > 等符号是什么含义?

在运用 KCL 多行字符串(运用三引号括起来的字符串),输出的 YAML 经常会带着一些特殊的记号,如 |,-,+> 等,这些记号一般为 YAML 多行字符串的表明办法,比方关于如下 KCL 代码:

data = """This is a KCL multi line string (the first line)
This is a KCL multi line string (the second line)
This is a KCL multi line string (the third line)
"""
var = 1

输出 YAML 为:

data: |+
  This is a KCL multi line string (the first line)
  This is a KCL multi line string (the second line)
  This is a KCL multi line string (the third line)

var: 1
  • | 表明块字符串款式,用于表明一个多行字符串,其间的所有换行符都表明字符串实在的换行;
  • > 表明块折叠款式,在其间所有的换行符将被空格替换;
  • +- 用于控制在字符串结尾运用换行符的状况。默认状况为字符串结尾保存单个换行符,假如要删除所有换行符,能够在款式指示符 |> 后边放置一个 - 来完结,假如要保存结尾的换行符,则需要在 |> 后边放置一个 +

更多细节可参阅: YAML 多行字符串 和 YAML 标准 v1.2

3. YAML 中在 | – + > 等符号之后呈现的数字是什么含义?

数字表明 YAML 傍边的显式缩进指示符。关于 YAML 中的长字符串,YAML 一般第一个非空行确认字符串的缩进等级,而当第一个非空行前面具有非前导字符时,比方换行符,YAML 要求必须运用显式缩进指示符来指定内容的缩进等级,比方 |2|1

比方关于如下 KCL 代码:

longStringStartWithEndline = """
This is the second line
This is the third line
"""
longStringStartWithEndline: |2
  This is the second line
  This is the third line

假如不需要长字符串开头的空行或换行符,则能够以如下两种办法进行 KCL 长字符串书写

  • 长字符串从第 1 行开始书写
longString = """This is the second line
This is the third line
"""
  • 运用续行符
longString = """\
This is the second line
This is the third line
"""

以上两种办法输出的 YAML 均为:

longString: |
  This is the second line
  This is the third line

更多细节可参阅: YAML 标准 v1.2