Курс языка программирования Raku / Продвинутый уровень / Подробнее о встроенных типах / Нативные типы
Типы машинного уровня
Нативные типы имеют имена, записанные строчными буквами:
int, num и str. Объявить
переменную с одним из них можно точно так же, как с Int или
Str:
my int $i = 42;
my num $n = 3.14e0;
say $i; # 42
say $n; # 3.14Нативное значение соответствует непосредственно машинному регистру или слову, без объекта-обёртки, который несёт обычное значение Raku. Это делает нативные типы быстрее и компактнее, что важно в плотных числовых циклах и больших массивах.
Есть одна особенность поведения, о которой нужно знать сразу:
нативная переменная никогда не может быть неопределённой. Если обычный
контейнер Int начинает с неопределённого значения
Any, то нативный int начинает с
нуля:
say (my Int $a); # (Int)
say (my int $b); # 0То же относится к нативным массивам, которые объявляются с указанием
нативного типа перед переменной с @:
my int @numbers = 10, 20, 30;
say @numbers.sum; # 60Такой массив хранит элементы как «сырые» машинные целые числа, а не
как обёрнутые объекты Int, и поэтому использует меньше
памяти. При интроспекции нативное значение автоматически
упаковывается в соответствующий полный тип, поэтому
(my int $b).WHAT выводит (Int).
Практика
Пройдите 1 тест по содержанию этой темы.
Навигация по курсу
← Нативные типы | Тест — Нативные типы →
💪 Или перейдите сразу к упражнениям этого
раздела.