中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

YAML 入門教程

YAML 是 "YAML Ain't a Markup Language"(YAML 不是一種標(biāo)記語(yǔ)言)的遞歸縮寫。在開發(fā)的這種語(yǔ)言時(shí),YAML 的意思其實(shí)是:"Yet Another Markup Language"(仍是一種標(biāo)記語(yǔ)言)。

YAML 的語(yǔ)法和其他高級(jí)語(yǔ)言類似,并且可以簡(jiǎn)單表達(dá)清單、散列表,標(biāo)量等數(shù)據(jù)形態(tài)。它使用空白符號(hào)縮進(jìn)和大量依賴外觀的特色,特別適合用來(lái)表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件、傾印調(diào)試內(nèi)容、文件大綱(例如:許多電子郵件標(biāo)題格式和YAML非常接近)。

YAML 的配置文件后綴為 .yml,如:json.yml

基本語(yǔ)法

  • 大小寫敏感
  • 使用縮進(jìn)表示層級(jí)關(guān)系
  • 縮進(jìn)不允許使用tab,只允許空格
  • 縮進(jìn)的空格數(shù)不重要,只要相同層級(jí)的元素左對(duì)齊即可
  • '#'表示注釋

數(shù)據(jù)類型

YAML 支持以下幾種數(shù)據(jù)類型:

  • 對(duì)象:鍵值對(duì)的集合,又稱為映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 數(shù)組:一組按次序排列的值,又稱為序列(sequence) / 列表(list)
  • 純量(scalars):?jiǎn)蝹€(gè)的、不可再分的值

YAML 對(duì)象

對(duì)象鍵值對(duì)使用冒號(hào)結(jié)構(gòu)表示 key: value,冒號(hào)后面要加一個(gè)空格。

也可以使用 key:{key1: value1, key2: value2, ...}。

還可以使用縮進(jìn)表示層級(jí)關(guān)系;

key: 
    child-key: value
    child-key2: value2

較為復(fù)雜的對(duì)象格式,可以使用問(wèn)號(hào)加一個(gè)空格代表一個(gè)復(fù)雜的 key,配合一個(gè)冒號(hào)加一個(gè)空格代表一個(gè) value:

?  
    - complexkey1
    - complexkey2
:
    - complexvalue1
    - complexvalue2

意思即對(duì)象的屬性是一個(gè)數(shù)組 [complexkey1,complexkey2],對(duì)應(yīng)的值也是一個(gè)數(shù)組 [complexvalue1,complexvalue2]

YAML 數(shù)組

- 開頭的行表示構(gòu)成一個(gè)數(shù)組:

- A
- B
- C

YAML 支持多維數(shù)組,可以使用行內(nèi)表示:

key: [value1, value2, ...]

數(shù)據(jù)結(jié)構(gòu)的子成員是一個(gè)數(shù)組,則可以在該項(xiàng)下面縮進(jìn)一個(gè)空格。

-
 - A
 - B
 - C

一個(gè)相對(duì)復(fù)雜的例子:

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

意思是 companies 屬性是一個(gè)數(shù)組,每一個(gè)數(shù)組元素又是由 id、name、price 三個(gè)屬性構(gòu)成。

數(shù)組也可以使用流式(flow)的方式表示:

companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

復(fù)合結(jié)構(gòu)

數(shù)組和對(duì)象可以構(gòu)成復(fù)合結(jié)構(gòu),例:

languages:
  - Ruby
  - Perl
  - Python 
websites:
  YAML: yaml.org 
  Ruby: ruby-lang.org 
  Python: python.org 
  Perl: use.perl.org

轉(zhuǎn)換為 json 為:

{ 
  languages: [ 'Ruby', 'Perl', 'Python'],
  websites: {
    YAML: 'yaml.org',
    Ruby: 'ruby-lang.org',
    Python: 'python.org',
    Perl: 'use.perl.org' 
  } 
}

純量

純量是最基本的,不可再分的值,包括:

  • 字符串
  • 布爾值
  • 整數(shù)
  • 浮點(diǎn)數(shù)
  • Null
  • 時(shí)間
  • 日期

使用一個(gè)例子來(lái)快速了解純量的基本使用:

boolean: 
    - TRUE  #true,True都可以
    - FALSE  #false,F(xiàn)alse都可以
float:
    - 3.14
    - 6.8523015e+5  #可以使用科學(xué)計(jì)數(shù)法
int:
    - 123
    - 0b1010_0111_0100_1010_1110    #二進(jìn)制表示
null:
    nodeName: 'node'
    parent: ~  #使用~表示null
string:
    - 哈哈
    - 'Hello world'  #可以使用雙引號(hào)或者單引號(hào)包裹特殊字符
    - newline
      newline2    #字符串可以拆成多行,每一行會(huì)被轉(zhuǎn)化成一個(gè)空格
date:
    - 2018-02-17    #日期必須使用ISO 8601格式,即yyyy-MM-dd
datetime: 
    -  2018-02-17T15:02:31+08:00    #時(shí)間使用ISO 8601格式,時(shí)間和日期之間使用T連接,最后使用+代表時(shí)區(qū)

引用

& 錨點(diǎn)和 * 別名,可以用來(lái)引用:

defaults: &defaults
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  <<: *defaults

test:
  database: myapp_test
  <<: *defaults

相當(dāng)于:

defaults:
  adapter:  postgres
  host:     localhost

development:
  database: myapp_development
  adapter:  postgres
  host:     localhost

test:
  database: myapp_test
  adapter:  postgres
  host:     localhost

& 用來(lái)建立錨點(diǎn)(defaults),<< 表示合并到當(dāng)前數(shù)據(jù),* 用來(lái)引用錨點(diǎn)。

下面是另一個(gè)例子:

- &showell Steve 
- Clark 
- Brian 
- Oren 
- *showell 

轉(zhuǎn)為 JavaScript 代碼如下:

[ 'Steve', 'Clark', 'Brian', 'Oren', 'Steve' ]

參考地址:

  • https://www.ruanyifeng.com/blog/2016/07/yaml.html
  • https://www.jianshu.com/p/97222440cd08
  • https://daihainidewo.github.io/blog/yaml%E6%95%99%E7%A8%8B/