Курс по Raku / Напреднали / Повече за вградените типове / Нативни типове 🆕
Типове с размер и препълване
Освен обикновения int, Raku има цели числа с фиксирана
битова ширина: int8, int16,
int32, int64 и техните беззнакови партньори
uint8, uint16, uint32,
uint64. Числото показва колко бита заема стойността.
Фиксираната ширина означава фиксиран диапазон. int8
съдържа стойности от -128 до 127;
uint8 съдържа от 0 до 255. Тъй
като хранилището не може да расте, преминаването над горната граница
води до връщане в началото — това е препълване:
my int8 $i = 127;
$i++;
say $i; # -128Добавянето на единица към най-голямата стойност на int8
не дава 128 (което не би се побрало); вместо това
стойността се обръща до най-малката, -128. Беззнаковите
типове също се обръщат:
my uint8 $u = 255;
$u++;
say $u; # 0Това е обратното на нормалния Int, който просто расте
колкото е необходимо и никога не препълва. Компромисът е целият смисъл
на нативните типове с размер: приемате фиксиран диапазон в замяна на
предвидимо, компактно и бързо съхранение.
Използвайте нативен тип с размер, когато знаете диапазона на данните
си и искате ефективност — например байтове от двоични данни в
uint8 масив. За обикновена аритметика, при която числата
могат да растат неограничено, използвайте Int.
Практика
Направете 1 тест върху съдържанието на тази тема.
Навигация в курса
← Тест — Нативни типове | Тест — Препълване →
💪 Или преминете направо към упражненията в този
раздел.