2017-02-08 19 views
7

YAML spec明確指出:爲什麼YAML規範要求在冒號後留出一個空格?

映象使用冒號和空間(「:」)來標記每個鍵:值對。

因此,這是合法的:

foo: bar 

但是,這,是不是:

foo:bar 

我看到很多人在網上被咆哮着的空間。我認爲他們有一點。我自己被燒了幾次。

爲什麼空間是強制性的?它背後的設計考慮是什麼?

回答

8

這很容易錯過,因爲規範使用的唯一突出的內部鏈接的最後一個字符離奇的慣例,但在你引用的部分「: 」實際上是一個鏈接to another section of the specification,回答你的問題:

通常情況下,YAML堅持「:」映射值指示符與空白值分開。這種限制的一個好處是,只要沒有空白,就可以在純標量內使用「:」字符。這允許未加引號的URL和時間戳。這也是一個潛在的混淆源,因爲「a:1」是一個簡單的標量,而不是一個關鍵:值對。

所以動機是,你可以寫列表,如本無需任何引用:

useful_values: 
- 2:30 
- http://example.com 
- localhost:8080 

如果空間是可選的,這可能最終會被模糊,並解釋爲一組關鍵的值對。

旁白:下面是JS的一個片段,使該文檔上的鏈接格式變得更加無用。

document.styleSheets[0].insertRule('a[href^="#"] { color: #00A !important; text-decoration: underline !important; background: none !important; }', 0); 
+0

哇!他們非常非常鬼鬼祟祟。謝謝。 – Vitaliy

相關問題