Att använda associativa arrayer

Fish Shell:
Att använda associativa arrayer

Hur gör man:

Fish stöder inte native associativa arrayer som Bash 4+, men du kan uppnå liknande funktionalitet med en kombination av listor och strängmanipulation. Så här kan du efterlikna dem:

Först, ställ in “associativa array”-element separat:

set food_color_apple "red"
set food_color_banana "yellow"

För att komma åt ett element, referera till det direkt:

echo $food_color_apple
# Utdata: röd

Om du behöver iterera över dem, använd en for-loop som överväger en namnkonvention:

for food in apple banana
    echo $food_color_$food
end
# Utdata:
# röd
# gul

För de som saknar Bashs ${!array[@]} för att få alla nycklar, kan du lagra nycklar i en separat lista:

set food_keys apple banana

for key in $food_keys
    echo $key 'är' $food_color_$key
end
# Utdata:
# apple är röd
# banana är gul

Fördjupning

Riktiga associativa arrayer som i andra skriptspråk är ännu inte en del av Fishs ansats. Lösningen som visas utnyttjar Fishs strängmanipulation och listkapaciteter för att skapa en pseudo-associativ arraystruktur. Även om det fungerar, är det inte lika rent eller felfritt som inbyggt stöd för associativa arrayer skulle vara. Andra skal som Bash och Zsh erbjuder inbyggd funktionalitet för associativa arrayer, vilket resulterar i mer rakt på sak, läsbart kod. Dock syftar Fishs designfilosofi till enkelhet och användarvänlighet, möjligtvis på bekostnad av sådana funktioner. Genvägen tillfredsställer de flesta behov, men håll ett öga på Fish Shells utveckling—dess utvecklare förbättrar och lägger till funktioner baserat på gemenskapsfeedback.