Курс Raku / Розширені / Контейнери / Адверби індексів 🆕
Існування та видалення
Наріччя :exists перетворює індекс на запитання: чи є
значення за цим ключем або індексом? Воно повертає булеве значення,
нічого не дістаючи:
my %h = apple => 1, pear => 2;
say %h<apple>:exists; # True
say %h<plum>:exists; # FalseЦе правильний спосіб перевірити наявність ключа, бо просте читання
%h<plum> або повернуло б невизначене значення, або,
залежно від даних, приховало б різницю між «відсутнє» та «є, але
невизначене».
Наріччя :delete вилучає запис і повертає значення, яке
той містив:
my %h = apple => 1, pear => 2;
say %h<apple>:delete; # 1
say %h.keys; # (pear)
say %h; # {pear => 2}Запису apple більше немає, а видалене значення
1 повертається, щоб ви могли ним скористатися.
Обидва наріччя працюють і з масивами, за індексом:
my @a = 10, 20, 30;
say @a[1]:exists; # True
say @a[5]:exists; # False
say @a[1]:delete; # 20
say @a[1]:exists; # FalseЯкщо вам цікаво, який вигляд матиме масив після вилучення середнього елемента, ось відповідь:
say @a; # [10 (Any) 30]Отже, єдиний послідовний запис дозволяє запитувати й змінювати контейнери на місці, не звертаючись до окремих методів.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Адверби індексів 🆕 | Тест — Адверби індексів →
💪 Або перейдіть одразу до вправ цього
розділу.