Korzystanie z tablic asocjacyjnych

Fish Shell:
Korzystanie z tablic asocjacyjnych

Jak to zrobić:

Fish nie obsługuje natywnie tablic asocjacyjnych tak jak Bash 4+, ale można osiągnąć podobną funkcjonalność, używając kombinacji list i manipulacji ciągami znaków. Oto jak je naśladować:

Najpierw ustawiając elementy “tablicy asocjacyjnej” oddzielnie:

set food_color_apple "red"
set food_color_banana "yellow"

Aby uzyskać dostęp do elementu, po prostu odwołaj się do niego bezpośrednio:

echo $food_color_apple
# Wyjście: red

Jeśli potrzebujesz iterować po nich, użyj pętli for z uwzględnieniem konwencji nazewnictwa:

for food in apple banana
    echo $food_color_$food
end
# Wyjście:
# red
# yellow

Dla tych, którym brakuje funkcji Bash ${!array[@]}, by uzyskać wszystkie klucze, można przechowywać klucze na osobnej liście:

set food_keys apple banana

for key in $food_keys
    echo $key 'jest' $food_color_$key
end
# Wyjście:
# apple jest red
# banana jest yellow

Głębsze zanurzenie

Prawdziwe tablice asocjacyjne, jak w innych językach skryptowych, nie są jeszcze częścią podejścia Fish. Obejście pokazane wykorzystuje możliwości manipulacji ciągami znaków i list Fish, aby stworzyć strukturę pseudo-tablicy asocjacyjnej. Chociaż to działa, nie jest to tak czyste lub wolne od błędów, jak gdyby wsparcie dla wbudowanych tablic asocjacyjnych było dostępne. Inne powłoki, takie jak Bash i Zsh, zapewniają wbudowaną funkcjonalność tablic asocjacyjnych, co skutkuje bardziej prostym, czytelnym kodem. Jednak filozofia projektowania Fish ma na celu prostotę i przyjazność dla użytkownika, możliwe kosztem takich funkcji. Obejście zaspokaja większość potrzeb, ale warto obserwować ewolucję Fish Shell - jego twórcy aktywnie ulepszają i dodają funkcje na podstawie opinii społeczności.