Курс языка программирования Raku / Продвинутый уровень / Контейнеры / Скалярные контейнеры / Exercises / Типизированный или нетипизированный

Решение: Типизированный или нетипизированный

Вот одно из возможных решений задачи.

Код

my $untyped;
my Int $typed;

dd $untyped;
dd $typed;

$untyped = 42;
$typed = 42;

dd $untyped;
dd $typed;

🦋 Исходный код можно найти в файле reuse-the-container.raku.

Вывод

$untyped = Any
Int $typed = Int
$untyped = 42
Int $typed = 42

Комментарии

  1. dd описывает два контейнера по-разному. Для нетипизированного выводится просто $untyped, тогда как для типизированного добавляется префикс с объявленным типом: Int $typed. Этот префикс и есть то отличие, которое вносит объявление типа.

  2. Пустые значения тоже различаются. Нетипизированный контейнер начинает с базового неопределённого значения Any, тогда как типизированный контейнер начинает с неопределённого значения своего типа, Int.

  3. После присваивания 42 обоим контейнерам значения выглядят одинаково, но $typed по-прежнему несёт свой тип и отклонит нецелочисленное значение — в отличие от $untyped, который принимает что угодно.

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

Типизированный или нетипизированный   |   Упорядоченные контейнеры