Використання асоціативних масивів

Fish Shell:
Використання асоціативних масивів

Як:

Fish за замовчуванням не підтримує асоціативні масиви як Bash 4+, але ви можете досягти подібної функціональності, використовуючи комбінацію списків та маніпуляцій з рядками. Ось як імітувати їх:

Спочатку налаштуйте окремі елементи “асоціативного масиву”:

set food_color_apple "червоний"
set food_color_banana "жовтий"

Для доступу до елемента просто звертайтеся до нього безпосередньо:

echo $food_color_apple
# Виведення: червоний

Якщо вам потрібно ітерувати по ним, використовуйте for-цикл, враховуючи конвенцію назв:

for food in apple banana
    echo $food_color_$food
end
# Виведення:
# червоний
# жовтий

Для тих, кому не вистачає можливості Bash ${!array[@]} для отримання всіх ключів, ви можете зберігати ключі в окремому списку:

set food_keys apple banana

for key in $food_keys
    echo $key 'це' $food_color_$key
end
# Виведення:
# apple це червоний
# banana це жовтий

Поглиблений Розгляд

Справжні асоціативні масиви, як у інших мовах сценаріїв, поки що не є частиною підходу Fish. Описаний обхід використовує можливості маніпуляції з рядками та списками Fish для створення структури псевдо-асоціативного масиву. Хоча це працює, це не так чисто або надійно, як би було з вбудованою підтримкою асоціативних масивів. Інші оболонки, як Bash та Zsh, надають вбудовану функціональність асоціативних масивів, що веде до більш простого та зрозумілого коду. Однак, філософія дизайну Fish прагне до простоти та зручності для користувача, можливо, за рахунок таких можливостей. Описаний обхід задовольняє більшість потреб, але слідкуйте за еволюцією Fish Shell - його розробники активно покращують та додають функції, виходячи з відгуків спільноти.