SEO-описание: Тип int представляет целочисленные (не дробные) значения. Type: Overview Parent: common-types-in-verse Order: 2 Tags: Verse Tags: int Tags: Целое число Tags: Число Topic-Image:int-topic-image.png Hero-Image:int-hero-image.png Social-Image:int-social-image.png
В Verse тип int
используется в качестве типа для хранения и обработки целочисленных значений. Переменная int
в языке Verse может содержать положительное число, отрицательное число или ноль и при этом не имеет дробной составляющей. Поддерживаются целочисленные значения в диапазоне от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 включительно.
Вы можете включать предопределённые значения типа int
в свой код в качестве литералов типа int
. Литерал типа int
— это целое число в коде.
Ниже приведены примеры того, как можно создавать целочисленные константы и переменные при помощи литералов типа int
:
# Эта переменная не меняется, так как её значение всегда корректно.
AnswerToTheQuestion : int = 42
# Цена колчана стрел в монетах (и цена не меняется):
CoinsPerQuiver : int = 100
# Число стрел в колчане (и число не меняется):
ArrowsPerQuiver : int = 15
# У игрока сейчас 225 монет и 3 стрелы. Эти значения могут меняться.
var Coins : int = 225
var Arrows : int = 3
# В игре отслеживается общее количество покупок, совершенных игроком.
# Игрок пока ничего не купил.
var TotalPurchases : int = 0
Операции с переменными типа int
Переменные типа int
поддерживают математические операции и сравнения с другими целочисленными значениями.
Математические операции
В языке Verse вы можете использовать четыре основные математические операции с целыми числами: +
для сложения, -
для вычитания, *
для умножения и /
для деления.
Для целочисленных значений использование оператора /
может приводить к ошибке, а результат в случае успешного выполнения операции будет иметь тип rational.
Тип rational может использоваться в качестве параметра только для следующих функций:
Floor()
: округляет значение типа rational до ближайшего целого числа в меньшую сторону.Ceil()
: округляет значение типа rational до ближайшего целого числа в бóльшую сторону.
В приведённом ниже коде выполняется деление целых чисел для определения того, сколько стрел игрок может купить на имеющееся у него количество монет. Деление целых чисел выполняется в выражении if
, так как такое деление может завершиться с ошибкой, в связи с чем оно должно выполняться в контексте, допускающем ошибки:
if (NumberOfQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
NumberOfArrowsYouCanBuy : int = NumberOfQuiversYouCanBuy * ArrowsPerQuiver
Вы также можете комбинировать операторы для выполнения основных математических операций (сложение, вычитание и умножение) и обновление значения переменной. Использование этих комбинированных операторов аналогично присвоению результата первому операнду математической операции. В нижеприведённом коде выполняются математические операции с int
для продажи игроку стрел в обмен на монеты:
# Возьмём монеты у игрока. Баланс монет игрока может стать отрицательным, если
# не выполнить проверку на наличие достаточного количества монет.
set Coins -= CoinsPerQuiver
# Выдадим стрелы игроку.
set Arrows += ArrowsPerQuiver
# Зачтём это в качестве покупки. У нас нет для этого переменной.
set TotalPurchases += 1
Оператор /=
не поддерживается переменными типа int
, поскольку результат целочисленного деления имеет тип rational и не может быть присвоен переменной типа int
.
Целочисленные значения со знаком
Целочисленное значение со знаком — это значение, которое может быть положительным, отрицательным или нулевым. С помощью оператора -
можно сделать число отрицательным, например -3
.
Также можно использовать оператор +
перед целочисленным значением, чтобы выровнять код визуально, при этом целочисленное значение не меняется.
# Это альтернативный способ продажи стрел игроку. Он
# функционально идентичен коду из раздела «Математические операции» выше.
set Coins += -CoinsPerQuiver
set Arrows += +ArrowsPerQuiver
set TotalPurchases += +1
Сравнение
Вы можете использовать оператор =
(допускающий возможность ошибки), чтобы проверить равенство двух целочисленных значений, а также оператор с возможностью ошибки <>
для проверки неравенства.
Поскольку числа упорядочены, можно использовать оператор <
(допускающий возможность ошибки) для проверки того, является ли одно целочисленное значение меньшим по отношению к другому целочисленному значению, а также оператор >
(также допускающий возможность ошибки) для проверки того, является ли одно целочисленное значение бóльшим по отношению к другому целочисленному значению.
Вы можете использовать оператор <=
(допускающий возможность ошибки) для проверки того, является ли одно целочисленное значение меньшим по отношению к другому целочисленному значению либо равным ему, и оператор >=
(также допускающий возможность ошибки) для проверки того, является ли одно целочисленное значение бóльшим по отношению к другому целочисленному значению либо равным ему.
# Проверим, хватает ли игроку монет на эту покупку.
if (Coins >= CoinsPerQuiver):
# Монет хватает! Совершаем покупку
set Coins -= CoinsPerQuiver
set Arrows += ArrowsPerQuiver
set TotalPurchases += 1
Стандартная библиотека
Стандартная библиотека содержит функции, помогающие создавать и использовать целочисленные значения, а также общие математические структуры и функции. Более подробную информацию об этих функциях см. в Справочнике по API Verse.
Альтернативные представления целых чисел
Вы также можете использовать шестнадцатеричную систему счисления для представления целых чисел, которая имеет основание 16, вместо десятичной системы с основанием 10. Это означает, что шестнадцатеричные значения представляются цифрами 0–9
и буквами A–F
. К примеру, 0x7F
является шестнадцатеричным представлением числа 127
, а 0xFACE
— числа 64206
.
Подробнее о реализации
В будущем обновлении тип int
будет семантически представлять целое число любого размера, однако в настоящее время в языке Verse тип int
реализован как знаковое 64-битное целое число. До этого обновления значение типа int
должно находиться в диапазоне [-2^63
, … , -1
, 0
, 1
, … , 2^63 - 1
], а целочисленные значения, включая результаты математических операций, которые выходят за пределы этого диапазона целых чисел, будут вызывать ошибку среды выполнения integer overflow (переполнение целочисленного значения).
Несмотря на то что для целочисленных значений в настоящее время действуют эти ограничения, код на языке Verse с целыми числами, который вы пишете сегодня, семантически будет таким же, как и в случае, когда целые числа будут иметь произвольную точность.
Сохраняемый тип
Целочисленные значения являются сохраняемыми. Это означает, что вы можете использовать их в переменных weak_map
, входящих в область видимости модуля, и их значения будут сохраняться в течение всех игровых сессий. Подробнее о сохраняемых элементах в Verse см. в статье Использование сохраняемых данных в Verse.