Курс Raku / Розширені / Контейнери / Контексти 🆕
Числовий, рядковий та логічний контекст
Три дуже поширені контексти просять значення повестися як число, як рядок або як булеве значення. Кожен має префіксний оператор, що задає його явно:
+— числовий контекст~— рядковий контекст?— булевий контекст
Застосовані до масиву, вони дають його довжину, його елементи, з’єднані пробілами, і те, чи є в ньому взагалі елементи:
my @a = 1, 2, 3;
say +@a; # 3
say ~@a; # 1 2 3
say ?@a; # TrueПорожній масив у числовому контексті дорівнює 0, а в
булевому — False:
my @empty;
say +@empty; # 0
say ?@empty; # FalseПисати ці оператори вручну щоразу не потрібно, бо мова може накинути
потрібний контекст за вас. Арифметика ставить свої операнди в числовий
контекст, конкатенація — у рядковий, а if,
while та and/or ставлять свою
умову в булевий контекст:
my @a = 1, 2, 3;
say 10 + @a; # 13, тут @a це його довжина: 3
say 'items: ' ~ @a; # items: 1 2 3
if @a { say 'not empty' } # not emptyТож if @array { … } працює саме так, як ви й
сподівалися: непорожній масив є істинним. Префіксні оператори — це явний
спосіб попросити те саме перетворення.
У поєднанні з постфіксним if це дозволяє писати справді
виразний код:
say "{+@a} items are there" if @a; # 3 items are thereПрактика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Контексти 🆕 | Тест — Контексти →
💪 Або перейдіть одразу до вправ цього розділу.