Assosiatiivisten taulukoiden käyttö

Fish Shell:
Assosiatiivisten taulukoiden käyttö

Miten:

Fish ei natiivisti tue assosiatiivisia taulukoita kuten Bash 4+, mutta voit saavuttaa samankaltaista toiminnallisuutta käyttämällä yhdistelmää listoja ja merkkijonomanipulaatiota. Näin voit jäljitellä niitä:

Ensimmäisenä, asetetaan “assosiatiiviset taulukon” elementit erikseen:

set food_color_apple "punainen"
set food_color_banana "keltainen"

Elementtiä käytetään viittaamalla siihen suoraan:

echo $food_color_apple
# Tuloste: punainen

Jos tarvitset iteroida niiden yli, käytä for-silmukkaa ottaen huomioon nimeämiskonvention:

for food in apple banana
    echo $food_color_$food
end
# Tuloste:
# punainen
# keltainen

Niille, jotka kaipaavat Bashin ${!array[@]} toiminnallisuutta saadakseen kaikki avaimet, voit tallentaa avaimet erilliseen listaan:

set food_keys apple banana

for key in $food_keys
    echo $key 'on' $food_color_$key
end
# Tuloste:
# apple on punainen
# banana on keltainen

Syväsukellus

Todelliset assosiatiiviset taulukot, kuten muissa skriptikielissä, eivät vielä ole osa Fishin lähestymistapaa. Näytetty kiertotapa hyödyntää Fishin merkkijonomanipulaation ja listan mahdollisuuksia luomaan pseudo-assosiatiivisen taulukkorakenteen. Vaikka se toimii, se ei ole yhtä siisti tai virheetön kuin sisäänrakennettu assosiatiivisten taulukoiden tuki olisi. Muut kuoret, kuten Bash ja Zsh, tarjoavat sisäänrakennetun assosiatiivisen taulukon toiminnallisuuden, joka johtaa suoraviivaisempaan, selkeämpään koodiin. Kuitenkin Fishin suunnittelufilosofia pyrkii yksinkertaisuuteen ja käyttäjäystävällisyyteen, mahdollisesti tällaisten ominaisuuksien kustannuksella. Kiertotapa tyydyttää suurimman osan tarpeista, mutta pidä silmällä Fish Shellin kehitystä—sen kehittäjät aktiivisesti parantavat ja lisäävät ominaisuuksia yhteisön palautteen perusteella.