Курс по 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Коментари
ddотчита двата контейнера по различен начин. За нетипизирания отпечатва само$untyped, докато за типизирания добавя префикс с декларирания тип:Int $typed. Този префикс е точно разликата, която декларираният тип прави.Празните стойности също се различават. Нетипизиран контейнер започва с обикновената неопределена стойност
Any, докато типизиран контейнер започва с неопределената стойност на своя тип,Int.След като и на двата е присвоено
42, стойностите изглеждат еднакви, но$typedвсе още носи своя тип и би отхвърлил стойност, която не е цяло число — за разлика от$untyped, който приема всичко.