Курс по Raku / Напреднали / Оператори

Видове оператори в Raku

Вече сте използвали много оператори — +, ~, ++ и така нататък. В Raku операторите се класифицират по позицията им спрямо операндите. Познаването на категориите помага по-нататък, когато дефинирате собствени оператори.

prefix

Префиксният оператор стои преди единичен операнд:

my $x = 5;
say -$x; # -5
say ?$x; # True

Тук - обръща знака на числото, а ? превръща стойност в нейната булева стойност.

infix

Инфиксният оператор стои между два операнда. Повечето познати аритметични и низови оператори са инфиксни:

say 3 + 4;       # 7
say 'a' ~ 'b';   # ab

Инфиксният оператор не винаги е пунктуационен символ — може да бъде и дума. Операторът gcd, който срещнахте при целите числа, например, е инфиксен оператор, записан като име между двата си операнда:

say 12 gcd 18;   # 6

postfix

Постфиксният оператор стои след единичен операнд:

my $x = 5;
$x++;
say $x; # 6

circumfix и postcircumfix

Циркумфиксният оператор обгражда своя операнд. Квадратните скоби, с които се създава масив, са циркумфиксен оператор:

my @a = [1, 2, 3];

Постциркумфиксният оператор обгражда нещо, но следва терм. Индексирането е постциркумфиксен оператор — [1] след @a:

my @a = 10, 20, 30;
say @a[1]; # 20

Тези имена — prefix, infix, postfix, circumfix и postcircumfix — са същите думи, които Raku използва, когато декларирате нов оператор, както ще видите по-нататък.

Практика

Направете 3 теста върху съдържанието на тази тема.

Упражнения

Този раздел съдържа 3 упражнения. Разгледайте всички теми в раздела, преди да се захванете с практиката.

  1. Броене нагоре
  2. Булева стойност
  3. Индексиране на хеш

Навигация в курса

Оператори   |   Броене нагоре