Курс по 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 тест върху съдържанието на тази тема.

Навигация в курса

Нативни типове 🆕   |   Тест — Нативни типове


💪 Или преминете направо към упражненията в този раздел.