supposons que nous ayons le YAML suivant
enum: [s1,s2,s3,s4] a: for t in enum: -t:p
y a-t-il une syntaxe utilisant la boucle for pour générer ce fichier YAML
comme:
a: - s1: p - s2: p - s3: p - s4: p
3 Réponses :
YAML est un langage de sérialisation de données lisible par l'homme. C'est communément utilisé pour les fichiers de configuration, mais pourrait être utilisé dans de nombreuses applications où les données sont stockées ou transmises.
Faire une boucle dessus est une tâche très facile que vous pouvez réaliser avec n'importe quel langage de programmation.
Par exemple, vous pouvez le faire dans bash comme suit:
enum="s1 s2 s3 s4" cat <<EOF> test.yml a: `for t in $enum; do echo " -${t}:p"; done` EOF
Mais dans mon cas, le yaml généré de cette manière deviendra très long et perdra en lisibilité. Je pense que c'est une méthode pour raccourcir yaml par une telle méthode.
Je vois ce que tu veux dire. Malheureusement, YAML n'est pas fait pour cela. Vous devriez une solution alternative, comme un modèle pour générer le yaml de production
.
Il n'y a aucun moyen de raccourcir un fichier YAML comme vous prévoyez de le faire.
Une solution serait un script qui interprète le fichier et le raccourcit comme vous le souhaitez, ce qui ne serait utilisable que pour la lisibilité.
Je pense que vous essayez quelque chose comme le modèle yaml dans azure devops: Essayez quelque chose comme:
${{each img in parameters.images}}: ${{img.key}}:
Il n'y a rien dans YAML qui puisse faire cela, mais il existe une multitude de programmes qui utilisent un système de modèle (par exemple
jinja2
) qui se développe en YAML. Vous devriez donc rechercher un système de modèles pour le langage de programmation que vous utilisez.BTW, vous obtenez de meilleurs blocs de code / YAML si vous sélectionnez le bloc et appuyez sur Ctrl + K pour indenter tout le bloc au lieu de mettre des guillemets autour du bloc (ce sont mieux pour les morceaux de code en ligne)