所以,我知道我可以做這樣的事情:是否有用於共享列表或地圖的部分的YAML語法?
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
而且具有sitelist
和anotherlist
都包含www.foo.com
和www.bar.com
。但是,我真正想要的是anotherlist
到也包含www.baz.com
,而不必重複www.foo.com
和www.baz.com
。
這樣做給了我一個語法錯誤在YAML解析器:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist: *sites
- www.baz.com
只需用錨和別名它似乎並不可能做到我想要的東西不添加亞結構的另一層面,如:
sitelist: &sites
- www.foo.com
- www.bar.com
anotherlist:
- *sites
- www.baz.com
這意味着這個YAML文件的使用者必須知道它。
是否有一種純粹的YAML做這樣的事情?或者我將不得不使用一些YAML後處理,例如實現變量替換或某些子結構的自動提升?我已經在做這種後處理來處理其他一些用例,所以我並不完全反對。但是我的YAML文件將被人類編寫,而不是機器生成的,所以我想盡量減少用戶在標準YAML語法之上需要記住的規則數量。
我還希望能夠做類似的事情與地圖:
namedsites: &sites
Foo: www.foo.com
Bar: www.bar.com
moresites: *sites
Baz: www.baz.com
我已經通過YAML spec搜索,也找不到任何東西,所以我懷疑,答案是隻是「不,你不能這樣做」。但是,如果任何人有任何想法會很棒。
編輯:由於沒有出現過答案,我假定沒有人發現什麼,我在YAML規範,這不能在YAML層來完成沒有。因此,我打開這個問題想到後處理YAML來幫助解決這個問題,以防將來有人發現這個問題。
**注意:**此問題也可以通過在YAML中標準使用錨和別名來解決。 **另請參閱:** [如何合併YAML數組?](http://stackoverflow.com/a/30770740/42223) – dreftymac 2017-04-28 10:22:57