Курс 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 тест за змістом цієї теми.
Навігація курсом
← Нативні типи 🆕 | Тест — Нативні типи →
💪 Або перейдіть одразу до вправ цього
розділу.