日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
讓YAML變得像它看起來(lái)一樣簡(jiǎn)單

YAML 看起來(lái)很簡(jiǎn)單,為什么它這么難寫呢?了解成功使用 YAML 的兩個(gè)秘訣。

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的平樂(lè)網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

如果你曾經(jīng)嘗試過(guò)寫 YAML,你可能一開(kāi)始會(huì)對(duì)它看起來(lái)很容易感到高興。乍一看,經(jīng)常用于配置文件、Ansible 劇本和普通文件數(shù)據(jù)庫(kù)的 YAML 看起來(lái)就像購(gòu)物清單一樣直觀。然而,YAML 的結(jié)構(gòu)中有很多細(xì)微的差別,它隱藏著一個(gè)危險(xiǎn)的秘密:YAML 實(shí)際上是一種高度精確、結(jié)構(gòu)化和令人驚訝的嚴(yán)格語(yǔ)言。好消息是,你只需要了解兩件事就可以知道 YAML 的工作原理。

關(guān)于 YAML 的真相是,YAML 中只有兩種數(shù)據(jù)結(jié)構(gòu):序列sequence和映射mapping。這是兩個(gè)花哨的名字,你會(huì)發(fā)現(xiàn)它代表了你非常熟悉的概念。這篇文章解釋了這兩種結(jié)構(gòu),更重要的是,介紹了它們是如何協(xié)同工作,使 YAML 成為表示你所關(guān)心的數(shù)據(jù)的強(qiáng)大方式。

YAML 序列

YAML 序列是一個(gè)列表。在其最簡(jiǎn)單的形式中,每行有一個(gè)項(xiàng)目,每行以破折號(hào)和空格開(kāi)始。

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

 
 
 
  1. ---
  2. - Linux
  3. - BSD
  4. - Illumos

不同的語(yǔ)言有不同的方式來(lái)表示這種數(shù)據(jù)。例如,在 Python 中,同一個(gè)列表可以寫成 ['Linux', 'BSD', 'Illumos']。當(dāng)你在現(xiàn)實(shí)生活中寫一個(gè)列表時(shí),例如在你去買菜之前,你寫的可能近似于 YAML 序列。

YAML 映射

YAML 映射是一個(gè)關(guān)鍵術(shù)語(yǔ)與該術(shù)語(yǔ)的定義相結(jié)合。在其他語(yǔ)言中,映射被稱為“鍵值對(duì)”或“詞典”。

這里有一個(gè)例子:

 
 
 
  1. ---
  2. Kernel: Linux
  3. CPU: AMD
  4. RAM: '16 GB'

不同的語(yǔ)言有不同的方式來(lái)表示這種數(shù)據(jù)。在 Python 中,例如,同樣的數(shù)據(jù)可以寫成 {"Kernel": "Linux", "CPU": "AMD", "RAM": "16 GB"}。在現(xiàn)實(shí)生活中,你可能會(huì)使用這種結(jié)構(gòu)來(lái)計(jì)劃,例如,與朋友的游戲之夜。一個(gè)朋友報(bào)名帶零食,另一個(gè)報(bào)名帶一副牌,另一個(gè)報(bào)名帶一個(gè)棋盤游戲,等等。

組合序列和映射

你現(xiàn)在知道 YAML 的語(yǔ)法了。序列和映射是 YAML 中僅有的兩種構(gòu)件,你想在 YAML 中表示的任何東西都可以放在序列或映射中。

或者同時(shí)使用這二者!

是的,序列和映射可以被組合和嵌套,這就是 YAML 看起來(lái)很直觀,但同時(shí)又感覺(jué)很復(fù)雜的原因之一。不過(guò),只有四種可能的組合,一旦你學(xué)會(huì)如何看它們,YAML 就會(huì)覺(jué)得像它看起來(lái)一樣簡(jiǎn)單。

序列的映射

當(dāng)你想讓一個(gè)鍵項(xiàng)有許多值時(shí),你可以使用一個(gè)序列的映射。也就是說(shuō),你從一個(gè)映射(鍵)開(kāi)始,但是給值一個(gè)列表:

 
 
 
  1. ---
  2. Linux:
  3.   - Fedora
  4.   - Slackware
  5. BSD:
  6.  - FreeBSD
  7.   - NetBSD

在這個(gè)示例代碼中,Linux 是第一個(gè)鍵,它的值是一個(gè)序列,其中包含 Fedora 和 Slackware。第二個(gè)鍵是 BSD,它的值是一個(gè)序列,包含 FreeBSD 和 NetBSD。

映射的映射

當(dāng)你想讓一個(gè)鍵項(xiàng)的值中既有鍵又有值時(shí),你可以使用映射的映射。也就是說(shuō),你從一個(gè)映射(鍵)開(kāi)始,但是給值另一個(gè)映射。

這可能有點(diǎn)欺騙性,但它揭示了 YAML 中使用特定術(shù)語(yǔ)的原因:因?yàn)槟阒徊贿^(guò)是創(chuàng)建了一個(gè)映射的列表,并不意味著你創(chuàng)建了一個(gè)序列。這里是一個(gè)映射的映射:

 
 
 
  1. ---
  2. Desktop:
  3.   CPU: RISC-V
  4.   RAM: '32 GB'
  5. Laptop:
  6.   CPU: AMD
  7.   RAM: '16 GB'

對(duì)大多數(shù)人來(lái)說(shuō),這看起來(lái)像一個(gè)列表。而且從技術(shù)上講,它是一個(gè)列表。但重要的是要認(rèn)識(shí)到,它不是 YAML 序列。它是一個(gè)映射,其中包含映射。作為半個(gè) YAML 專家,你可以從明顯缺少破折號(hào)的地方看出區(qū)別。

在 Ansible 劇本的所有結(jié)構(gòu)中,我發(fā)現(xiàn)這個(gè)結(jié)構(gòu)最容易欺騙人。作為人類,我們喜歡列表,當(dāng)我們看到一個(gè)數(shù)據(jù)結(jié)構(gòu) 在字面上 是列表時(shí),大多數(shù)人會(huì)把它當(dāng)成 YAML 序列。但是在 YAML 中,雖然序列是列表,但是列表并不總是序列。

序列的序列

就像你可以嵌套映射一樣,你可以將一個(gè)序列嵌套到一個(gè)序列中:

 
 
 
  1. ---
  2. - [Linux, FreeBSD, Illumos]
  3. - [YAML, XML, JSON]

這可能是我在 YAML 的實(shí)際使用中遇到的最不常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),但有時(shí)你需要一個(gè)列表的列表。

映射的序列

你也可以創(chuàng)建一個(gè)包含映射的序列。對(duì)于人類排序數(shù)據(jù)的方式來(lái)說(shuō),這并不太常見(jiàn),但對(duì)于計(jì)算機(jī)來(lái)說(shuō),這可能是一個(gè)重要的結(jié)構(gòu)。

這里有一個(gè)例子:

 
 
 
  1. ---
  2. -
  3.   CPU: AMD
  4.   RAM: '16 GB'
  5. -
  6.   CPU: Intel
  7.   RAM: '16 GB'

對(duì)于 YAML,這可能是最不直觀的語(yǔ)法。我發(fā)現(xiàn)它在 Python 中呈現(xiàn)時(shí)更清晰:

 
 
 
  1. [{"CPU": "AMD", "RAM": "16 GB"}, {"CPU": "Intel", "RAM": "16 GB"}]

方括號(hào)代表一個(gè)列表結(jié)構(gòu),這個(gè)列表包含兩個(gè)字典。每個(gè)字典都包含鍵值對(duì)。

構(gòu)建更好的 YAML

現(xiàn)在你知道了 YAML 的兩個(gè)組成部分,以及它們?nèi)绾伪唤M合起來(lái)以表示復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。問(wèn)題是:你要用 YAML 構(gòu)建什么?

和很多人一樣,我也使用 YAML 來(lái)編寫 Ansible 劇本。我還用它作為一種簡(jiǎn)單的配置格式、作為 D&D 的角色表、表示項(xiàng)目組織所需的目錄結(jié)構(gòu),等等。只要你能適應(yīng)序列和映射的概念,你會(huì)發(fā)現(xiàn) YAML 是一種很容易編寫、閱讀和(如果有合適的庫(kù))解析的格式。

如果你發(fā)現(xiàn)自己經(jīng)常使用 YAML,請(qǐng)下載我們的 YAML 速查表,以幫助你直觀地了解基本數(shù)據(jù)結(jié)構(gòu)及其組合,并幫助你記住一些額外的語(yǔ)法約定。通過(guò)一點(diǎn)點(diǎn)的練習(xí),你會(huì)發(fā)現(xiàn) YAML 真的和它看起來(lái)一樣簡(jiǎn)單!


文章題目:讓YAML變得像它看起來(lái)一樣簡(jiǎn)單
URL鏈接:http://www.dlmjj.cn/article/coedpsc.html