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

Розв’язання: Типізована чи нетипізована

Ось один із можливих варіантів розв’язання задачі.

Код

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, який приймає будь-що.

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

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