Fish Shell:
Utilizzo di array associativi
Come fare:
Fish non supporta nativamente gli array associativi come Bash 4+, ma è possibile ottenere una funzionalità simile utilizzando una combinazione di liste e manipolazione di stringhe. Ecco come emularli:
Prima, configurando separatamente gli elementi “array associativo”:
set food_color_apple "red"
set food_color_banana "yellow"
Per accedere a un elemento, basta fare riferimento direttamente ad esso:
echo $food_color_apple
# Output: red
Se è necessario iterarli, usare un ciclo for tenendo conto di una convenzione di denominazione:
for food in apple banana
echo $food_color_$food
end
# Output:
# red
# yellow
Per coloro che sentono la mancanza del ${!array[@]}
di Bash per ottenere tutte le chiavi, è possibile memorizzare le chiavi in una lista separata:
set food_keys apple banana
for key in $food_keys
echo $key 'is' $food_color_$key
end
# Output:
# apple is red
# banana is yellow
Approfondimento
Array associativi veri e propri, come in altri linguaggi di scripting, non fanno ancora parte dell’approccio di Fish. Il trucco mostrato sfrutta le capacità di manipolazione delle stringhe e delle liste di Fish per creare una struttura pseudo-array associativa. Anche se funziona, non è pulito o privo di errori come lo sarebbe il supporto incorporato per gli array associativi. Altri shell come Bash e Zsh forniscono funzionalità incorporate di array associativi, che risultano in codice più diretto e leggibile. Tuttavia, la filosofia di design di Fish mira alla semplicità e alla facilità d’uso, possibilmente a scapito di tali funzionalità. La soluzione soddisfa la maggior parte delle esigenze, ma tenete d’occhio l’evoluzione di Fish Shell: i suoi sviluppatori migliorano attivamente e aggiungono funzionalità basate sui feedback della comunità.