Курс по 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 тест върху съдържанието на тази тема.
Навигация в курса
← Нативни типове 🆕 | Тест — Нативни типове →
💪 Или преминете направо към упражненията в този
раздел.