Курс по 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, here @a is its length: 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 тест върху съдържанието на тази тема.
Навигация в курса
← Контексти 🆕 | Тест — Контексти →
💪 Или преминете направо към упражненията в този
раздел.