Gebruik van associatieve arrays

Fish Shell:
Gebruik van associatieve arrays

Hoe:

Fish ondersteunt van nature geen associatieve arrays zoals Bash 4+, maar je kunt een vergelijkbare functionaliteit bereiken met een combinatie van lijsten en stringmanipulatie. Hier is hoe je ze kunt nabootsen:

Eerst, het opzetten van “associatieve array” elementen apart:

set food_color_apple "rood"
set food_color_banana "geel"

Om een element te benaderen, verwijs je er direct naar:

echo $food_color_apple
# Uitvoer: rood

Als je erover moet itereren, gebruik dan een for-loop met inachtneming van een naamgevingsconventie:

for food in apple banana
    echo $food_color_$food
end
# Uitvoer:
# rood
# geel

Voor degenen die Bash’s ${!array[@]} missen om alle sleutels te krijgen, kun je sleutels in een aparte lijst opslaan:

set food_keys apple banana

for key in $food_keys
    echo $key 'is' $food_color_$key
end
# Uitvoer:
# apple is rood
# banana is geel

Diepgaande Duik

Echt associatieve arrays zoals in andere scripttalen zijn nog geen onderdeel van Fish’s benadering. De getoonde work-around maakt gebruik van Fish’s stringmanipulatie en lijstcapaciteiten om een pseudo-associatieve arraystructuur te creëren. Hoewel het werkt, is het niet zo schoon of foutbestendig als ingebouwde ondersteuning voor associatieve arrays zou zijn. Andere shells zoals Bash en Zsh bieden ingebouwde functionaliteit voor associatieve arrays, wat resulteert in meer rechttoe rechtaan, leesbare code. Echter, Fish’s ontwerpfilosofie streeft naar eenvoud en gebruiksvriendelijkheid, mogelijk ten koste van dergelijke functies. De work-around voldoet aan de meeste behoeften, maar houd de evolutie van Fish Shell in de gaten—zijn ontwikkelaars verbeteren actief en voegen functies toe op basis van feedback van de gemeenschap.