Verse usa int como tipo para guardar y manejar enteros. En Verse, un int puede contener un número positivo o negativo o cero y no tiene componente fraccionario. El rango de enteros compatibles va desde -9 223 372 036 854 775 808 hasta 9 223 372 036 854 775 807, inclusive.
Puedes incluir valores float predefinidos int dentro de tu código como int literales. Un literal int es un número entero en su código.
Los siguientes son ejemplos de cómo puedes crear enteros constantes y variables con literales int:
# Esta variable nunca cambiará, porque es universalmente correcta.
AnswerToTheQuestion : int = 42
# Un carcaj de flechas cuesta esta cantidad de monedas y no se puede cambiar:
CoinsPerQuiver : int = 100
# Un carcaj de flechas contiene esta cantidad de flechas y no se puede cambiar:
ArrowsPerQuiver : int = 15
# El jugador actualmente tiene 225 monedas y 3 flechas. Estos valores pueden cambiar
var Coins : int = 225
var Arrows : int = 3
# El juego realiza un seguimiento del número total de compras que realiza el jugador.
# Hasta ahora, el jugador no ha comprado nada.
var TotalPurchases : int = 0
Operaciones con Int
El tipo int admite operaciones matemáticas y comparaciones con otros enteros.
Matemáticas
Puede usar las cuatro operaciones matemáticas básicas con números enteros en Verse: + para sumar, - para restar, * para multiplicar y / para dividir.
Para números enteros, el operador / es falible, y el resultado es un tipo racional si tiene éxito.
El tipo racional solo se puede utilizar como parámetro para las siguientes funciones:
Floor(): Redondea hacia abajo el valor racional al entero más cercano.Ceil(): Redondea el valor racional al entero más cercano.
El siguiente código utiliza la división de enteros para determinar cuántas flechas puede comprar el jugador con sus monedas. La división de enteros se usa en una expresión if porque la división de enteros es fallida y, por lo tanto, debe estar en un contexto de fallo:
if (NumberOfQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
NumberOfArrowsYouCanBuy : int = NumberOfQuiversYouCanBuy * ArrowsPerQuiver
También puedes combinar operadores para operaciones matemáticas básicas (suma, resta y multiplicación) y actualizar el valor de una variable. Estos operadores combinados son lo mismo que asignar el resultado al primer operando de la operación matemática. El siguiente código usa matemáticas int para vender las flechas del jugador a cambio de monedas:
# Toma monedas del jugador. Esto puede hacer que el jugador pase a tener una cantidad negativa
# de monedas si no se verifica que el jugador tenga suficientes monedas por adelantado.
set Coins -= CoinsPerQuiver
# Da flechas al jugador.
set Arrows += ArrowsPerQuiver
# Cuenta esto como una compra. No tenemos una variable para esto.
set TotalPurchases += 1
El operador /= no se admite para int, ya que el resultado de la división de enteros es un tipo racional y, por lo tanto, no se puede asignar a un int.
Enteros con signo
Un entero con signo es un valor que puede ser positivo, negativo o cero. El operador - se puede utilizar para negar un entero si - aparece antes del entero, por ejemplo -3.
También puedes usar el operador + antes de un entero para ayudar a alinear tu código visualmente, pero no cambiará el valor del entero.
# Esta es una manera alternativa de vender flechas al jugador. Es
# funcionalmente idéntica al código en la sección de matemáticas anterior.
set Coins += -CoinsPerQuiver
set Arrows += +ArrowsPerQuiver
set TotalPurchases += +1
Comparación
Puedes usar el operador falible = para probar si dos enteros son iguales y el operador falible <> para probar la desigualdad.
Dado que los números están ordenados, se puede utilizar el operador falible < para comprobar si un entero es menor que otro entero y el operador falible > para comprobar si un entero es mayor que otro entero.
Puedes utilizar el operador falible <= para comprobar si un entero es menor o igual a otro entero, y el operador falible >= para comprobar si un entero es mayor o igual a otro entero.
# Verifica que el jugador pueda pagar esta compra.
if (Coins >= CoinsPerQuiver):
# Pueden proceder con la compra
set Coins -= CoinsPerQuiver
set Arrows += ArrowsPerQuiver
set TotalPurchases += 1
Biblioteca estándar
La biblioteca estándar brinda funciones para ayudar a crear y utilizar enteros y estructuras y funciones matemáticas comunes. Consulta la referencia de la API de Verse para obtener más detalles sobre estas funciones.
Representaciones alternativas de enteros
También puedes usar el sistema de numeración hexadecimal para representar números enteros, que es base-16, en lugar del sistema de numeración decimal que usa base-10. Esto significa que los valores hexadecimales se representan con los dígitos 0-9 y las letras A-F. Por ejemplo, 0x7F es lo mismo que 127 y 0xFACE es lo mismo que 64206.
Detalles de implementación
En una actualización futura, int representará semánticamente un número entero de cualquier tamaño, pero actualmente, un int en Verse se implementa como un número entero de 64 bits con signo. Hasta esta actualización, un int debe estar en el rango [-2^63, … , -1, 0, 1, … , 2^63 - 1] y los enteros , incluidos los resultados de las operaciones matemáticas que están fuera de este rango para tamaños de int, producirán un error de tiempo de ejecución denominado desbordamiento de enteros.
Aunque los números enteros actualmente tienen estas restricciones, el código Verse con números enteros que escriba hoy será semánticamente igual que cuando los números enteros pueden tener una precisión arbitraria.
Tipos persistentes
Los valores enteros son persistentes. Esto quiere decir que lo puedes usar en tus variables weak_map del módulo y hacer que sus valores persistan a lo largo de las sesiones de juego. Para obtener más información sobre la persistencia en Verse, consulta Cómo usar datos persistentes en Verse.