Курс 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 тест за змістом цієї теми.

Навігація курсом

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


💪 Або перейдіть одразу до вправ цього розділу.