Курс 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Коментарі
ddповідомляє про два контейнери по-різному. Для нетипізованого він виводить просто$untyped, а для типізованого додає попереду оголошений тип:Int $typed. Цей префікс і є саме тією різницею, яку створює оголошений тип.Порожні значення теж різняться. Нетипізований контейнер починає з голого невизначеного значення
Any, тоді як типізований починає з невизначеного значення свого типу —Int.Після того як обом присвоєно
42, значення виглядають однаково, але$typedі далі несе свій тип і відкинув би нецілочислове значення — на відміну від$untyped, який приймає будь-що.