什么是 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