YAML Çok Satırlı Diziler


140

In YAML , kolayca oluşturabilir çok hatlı dizeleri . Ancak, |karakteri kullanarak (özellikle yapılandırma dosyaları içinde okunabilirlik için) çok satırlı bir dizi oluşturma yeteneği istiyorum .

Bir YAML dizisi olarak temsil edilebilir: ['key1', 'key2', 'key3'].

Bir YAML dizisi bir tire ve ardından bir boşluk ve ardından bir dize kullanır:

- String1
- String2
- String3

Bu kadar değerlendirmek istiyoruz: ['string1', 'string2', 'string3'].

Bir YAML eşlemesi , YAML'de her zaman gördüğümüz bir dizi anahtar ve değer çiftidir:

Key1: string1
Key2: string2
Key3: string3

Bu iyi ve güzel, ama benim hayatım için çok satırlı bir dizi yapmak nasıl göremiyorum. Bunun gibi bir şey:

|
['string1', 'string2', 'string3']
['string4', 'string5', 'string6']

YAML'de çoklu dizi eşlemeleri oluşturma ve bunları benim tercih ettiğim dilimle birleştirmekten yoksun, çok satırlı diziler elde etmenin herhangi bir yolu var mı, belki { }Python'da olduğu gibi YAML'de?


dürüst olmak gerekirse, çok satırlı dizi nedir & ne zaman hiç anlamlı olmalı? Kodunuzun görünüşünden ziyade
OK999

Bir kerede tek bir ekranı görmek yerine tüm seçenekleri görmek için ekran boyunca yatay olarak kaydırmak zorundasınız.
Jimbo

Yanıtlar:


241

Bir YAML sekansı olan bir dizi . Bu onu ifade etmenin doğru yolu:

key:
  - string1
  - string2      
  - string3
  - string4
  - string5
  - string6

Bu şu anlama gelir:

key: ['string1', 'string2', 'string3', 'string4', 'string5', 'string6']

Tek satırlık bir diziyi birkaç satıra bölmek de yasaldır:

key: ['string1', 'string2', 'string3', 
  'string4', 'string5', 
  'string6']

ve hatta tek satırlı dizilerde çok satırlı dizelere sahip olabilir:

key: ['string1', 'long
  string', 'string3', 'string4', 'string5', 'string6']

1
dizeler bir - ile başlıyorsa sorun olur (örneğin komut satırında iletilen seçenekler)? sonra alıntı yapmak zorunda mıyım? - - "-myarg" `?
ekkis

2
Bu tamamen YAML'yi ayrıştırmak için kullandığınız programa bağlıdır. Bu soru sadece YAML spesifikasyonu ile ilgilidir.
Steve Bennett

39

bunu denedin mi

-
  name: Jack
  age: 32
-
  name: Claudia
  age: 25

Bunu anladım: [{"name"=>"Jack", "age"=>32}, {"name"=>"Claudia", "age"=>25}]( YAMLRuby sınıfını kullanıyorum).


6

Aşağıdakiler işe yarar:

myarray: [
  String1, String2, String3,
  String4, String5, String5, String7
]

Snakeyaml uygulamasını kullanarak test ettim, ancak diğer uygulamalardan emin değilim.


2
Puppet Enterprise 3.7 hiera yaml (Ruby yaml) ile çalıştı. Yakut yaml'in de oldukça hassas olduğunu düşündüğüm bir şey, kimliğidir ve sekmeleri kullanmaktan kaçının. bu nedenle yukarıdaki örnek, ilk satırın myarray: [String1, String2, String3,ve ikinci satırın `String4, String5, String5, String7] olduğu aynı sayıda boşluk tanımlanmış iki satırdaki gibi olmalıdır
Walid

2

Dizi öğesi değerleri küçük olduğunda benim için ve okunabilirlik açısından iyi çalışır:

key: [string1, string2, string3, string4, string5, string6]

Not: snakeyaml uygulaması kullanıldı


0

İhtiyacınız olan şey bir dizi diziyse, şu şekilde yapabilirsiniz:

key:
  - [ 'value11', 'value12', 'value13' ]
  - [ 'value21', 'value22', 'value23' ]

Teşekkürler Vinicius, ama soru açıkça belirtti: "Ben çok satırlı bir dizi oluşturma yeteneği istiyorum", birden çok dizi birden fazla satır.
Jimbo
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.