Constantes
Una constante es una ubicación en la que se almacena un valor, y su valor no puede cambiar durante el tiempo de ejecución del programa.
Para crear una constante, debes especificar su identificador y su tipo, lo que se conoce como declarar una constante, y proporcionar un valor para la misma, lo que se conoce como inicializar una constante.
Una constante debe ser inicializada cuando se declara, y debe ser declarada antes de poder utilizarse.
La creación de constantes tiene esta sintaxis:
Identifier : type = expressionLas constantes declaradas en una función pueden omitir el tipo:
Identifier := expressionSi se omite el tipo, el tipo de la constante se infiere de la expresión empleada para inicializar la constante. Solo las constantes locales pueden omitir el tipo porque describe cómo se puede utilizar la constante. Una constante de un módulo forma parte de la interfaz del módulo que la contiene. Sin el tipo, esa interfaz no es evidente.
En el siguiente ejemplo, se genera un número aleatorio en cada iteración del bucle y se utiliza para inicializar la constante RandomNumber. El número aleatorio solo saldrá del bucle si es inferior a veinte.
loop:
Limit := 20
# For local constants, the type can be omitted.
RandomNumber : int = GetRandomNumber()
# Providing the type explicitly can make the code easier to read.
if (RandomNumber < Limit):
breakObserva que en cada iteración del bucle se introduce una nueva constante denominada RandomNumber y se le asigna el resultado de GetRandomNumber() como su valor.
Variables
Además de las constantes descritas anteriormente, Verse también tiene variables.
Las variables son similares a las constantes, pero se definen con la palabra clave var, lo que significa que puedes cambiar sus valores en cualquier momento.
Por ejemplo:
var MaxHealthUpgrade : int = 10Es una variable de entero, y su valor no siempre es 10.
La creación de variables tiene esta sintaxis:
var Identifier : type = expressionTen en cuenta que el tipo debe especificarse explícitamente para las variables.
Después de crear una variable, puedes asignarle un valor diferente con la siguiente sintaxis:
set Identifier = expressionAdemás de =, puedes usar varios operadores para mutar una variable. Por ejemplo:
var X:int = 0
set X += 1
set X *= 2Variables globales
Una variable definida en un módulo es global para cualquier instancia de juego que se ejecute donde la variable esté dentro del ámbito.
Una forma de declarar una variable con ámbito modular en Verse es usar el tipo weak_map(session, t), en el que el tipo de clave es el tipo de la instancia actual de la isla de Fortnite, o session, y el tipo de valor es cualquier tipo t. Para más información sobre weak_map, consulta Map.
El siguiente ejemplo muestra cómo crear una variable entera global denominada GlobalInt que se incrementa cada vez que se llama a ExampleFunction().
using { /Verse.org/Simulation } # For session
var GlobalInt:weak_map(session, int) = map{}
ExampleFunction():void=
X := if (Y := GlobalInt[GetSession()]) then Y + 1 else 0
if:
set GlobalInt[GetSession()] = X
Print("{X}")Las variables de ámbito modular que utilizan el tipo sesión como clave tienen las siguientes limitaciones:
Solo puedes acceder a los valores de la sesión actual en la que te encuentres, no a los de ninguna otra.
La variable con ámbito modular
weak_mapno se puede leer ni escribir completamente, por lo que no es posible leer o anular los valores de todas las sesiones.No puedes iterar los valores de un
weak_mapni ver cuántas sesiones están activas actualmente, porque unweak_mapno tiene longitud.
Datos de persistencia
A excepción de las variables de ámbito modular asociadas a session, una variable de ámbito modular requiere persistencia, es decir, el almacenamiento de datos más allá de la partida actual.
Puedes declarar una variable persistente en Verse utilizando el tipo weak_map(player, t). Cualquier tipo representado por t que sea persistente se pueden almacenar y se puede acceder a él para un jugador en particular. Además, los datos pueden ser visibles para sesiones de juego posteriores. Cada vez que un jugador se une a una partida, sus datos guardados previamente se cargan en todas las variables del módulo de tipo weak_map(player, t).
En el siguiente ejemplo, la variable global `weak_map` MySavedPlayerData utiliza el tipo de jugador como clave y un entero como valor. Una vez que hayas definido tus datos de persistencia, tendrás que inicializar los datos de cada jugador. Para ello, comprueba si no existen ya datos almacenados para ese jugador y añade el jugador y un valor inicial al weak_map.
using { /Fortnite.com/Devices }
using { /UnrealEngine.com/Temporary/Diagnostics }
using { /Verse.org/Simulation }
var MySavedPlayerData:weak_map(player, int) = map{}
# A Verse-authored creative device that can be placed in a level
persistence_example := class(creative_device):
# Runs when the device is started in a running game
Las variables de ámbito modular que utilizan el tipo player como clave tienen las siguientes limitaciones:
El acceso a los datos de persistencia del jugador solo está permitido cuando el jugador se encuentra en la partida actual.
Si un jugador abandona una partida o no está en la sesión actual, ya no se puede almacenar ni acceder a sus datos en esa sesión de juego. Si el jugador regresa o vuelve a jugar la misma partida, podrá acceder a sus datos y actualizarlos.
La variable global
weak_mapno se puede leer ni escribir completamente, por lo que no es posible leer o anular los valores de todos los jugadores.No puedes iterar los valores de un
weak_mapni ver cuántos jugadores tienen un registro en elweak_map, porque unweak_mapno tiene longitud.Una sola isla puede tener hasta dos variables persistentes, es decir, dos variables
weak_mapconplayercomo tipo de clave.El valor de
weak_mapde al menos una variable persistente debe ser una clase si se ha alcanzado el límite máximo de variables persistentes.Un único registro
weak_maptiene un tamaño de datos máximo de 128 kilobytes (kB) por jugador.
Para obtener más información sobre la persistencia en Verse, consulta la sección Cómo utilizar datos persistentes en Verse.