Курс Raku / Розширені / Контейнери / Скалярні контейнери

Значення за замовчуванням

Коли нову скалярну змінну створено без негайного присвоєння, контейнер усе одно містить значення — своє типове значення. Яким саме воно буде, залежить від типу змінної.

Наведена нижче програма не є найкращим способом користуватися Raku, але вона показує суть:

my $int;
say $int + 5;

Вивід містить 5, чого ви й могли очікувати, якщо припустили, що типовим значенням $int є 0. Однак програма також виводить попередження:

Use of uninitialized value $int of type Any in numeric context
  in block <unit> at t.raku line 2
5

Щоб позбутися цієї невизначеності, або присвойте значення явно:

my $int = 0;
say $int + 5; # 5

Або оголосіть типове значення трейтом is default:

my $int is default(0);
say $int + 5; # 5

Типове значення не обмежене нулем. Ним може бути будь-яке значення, яке ви вважаєте вдалим кандидатом, наприклад:

my $int is default(1);
say $int + 5; # 6

Навігація курсом

Тест — Обмеження типів   |   Проксіювання викликів методів


💪 Або перейдіть одразу до вправ цього розділу.