Constantes
Uma constante é um local onde um valor é armazenado, e esse valor não pode ser alterado durante o tempo de execução do programa.
Para criar uma constante, você deve especificar seu identificador e tipo, o que é conhecido como declarar uma constante, e fornecer um valor para a constante, o que é conhecido como inicializar uma constante.
Uma constante deve ser inicializada ao ser declarada e deve ser declarada antes de poder ser usada.
A criação de constantes tem a seguinte sintaxe:
Identifier : type = expressionConstantes declaradas em uma função podem omitir o tipo:
Identifier := expressionSe o tipo for omitido, o tipo da constante será inferido a partir da expressão usada para inicializar a constante. Apenas constantes locais podem omitir o tipo, pois este descreve como a constante pode ser usada. Uma constante em um módulo faz parte da interface do módulo que a contém. Sem o tipo, essa interface não é óbvia.
No exemplo a seguir, um número aleatório é gerado em cada iteração do loop e usado para inicializar a constante RandomNumber. O número aleatório apenas sairá do loop se for menor que vinte.
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):
breakObserve que em cada iteração de loop, uma nova constante chamada RandomNumber é introduzida e recebe o resultado de GetRandomNumber() como seu valor.
Variáveis
Além das constantes descritas acima, a linguagem Verse também tem variáveis.
Variáveis são semelhantes a constantes, mas são definidas com a palavra-chave var, o que significa que você pode alterar seus valores a qualquer momento.
Por exemplo,
var MaxHealthUpgrade : int = 10é uma variável de inteiro e seu valor nem sempre pode ser 10.
A criação de variáveis tem a seguinte sintaxe:
var Identifier : type = expressionObserve que o tipo deve ser explicitamente especificado para variáveis.
Depois de criar uma variável, você pode atribuir um valor diferente a ela com a seguinte sintaxe:
set Identifier = expressionAlém de =, vários outros operadores podem ser usados para transformar uma variável. Por exemplo,
var X:int = 0
set X += 1
set X *= 2Variáveis globais
Uma variável definida em um módulo é global para qualquer instância de jogo em execução onde a variável está no escopo.
Uma maneira de declarar uma variável com escopo de módulo em Verse é usar o tipo weak_map(session, t) em que o tipo de chave é o tipo da instância atual da Ilha Fortnite, ou sessão, e o tipo de valor é qualquer tipo t. Consulte detalhes sobre weak_map em Mapa.
O exemplo a seguir mostra como criar uma variável inteira global chamada GlobalInt que é incrementada sempre que ExampleFunction() é chamada.
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}")As variáveis com escopo de módulo que usam o tipo de sessão como chave têm as seguintes limitações:
Apenas é possível acessar os valores da sessão atual em que você está, e não de qualquer outra sessão.
A variável com escopo de módulo
weak_mapnão pode ser completamente lida ou gravada e, portanto, não é possível ler nem substituir os valores para todas as sessões.Não é possível iterar pelos valores de um
weak_mapnem ver quantas sessões estão ativas no momento, porque umweak_mapnão tem comprimento.
Dados com persistência
Exceto para variáveis com escopo de módulo associadas à sessão, uma variável com escopo de módulo requer persistência: o armazenamento dos dados além do jogo atual.
Você pode declarar uma variável persistente em Verse usando o tipo weak_map(player, t). Qualquer tipo representado por t que seja persistente pode ser armazenado e acessado por um jogador específico e os dados podem ficar visíveis em sessões de jogo subsequentes. Sempre que um jogador entra em um jogo, seus dados salvos anteriormente são carregados em todas as variáveis com escopo de módulo do tipo weak_map(player, t).
No exemplo a seguir, a variável global "weak_map" MySavedPlayerData usa o tipo de jogador como a chave e um inteiro como valor. Depois de definir seus dados persistentes, você precisará inicializar os dados de cada jogador. Você pode fazer isso verificando se ainda não há dados armazenados para esse jogador e, em seguida, adicionando o jogador e um valor inicial ao 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
As variáveis com escopo de módulo que usam o tipo player como chave têm as seguintes limitações:
O acesso aos dados persistentes do jogador só é permitido quando o jogador está no jogo atual.
Se um jogador sair do jogo ou não estiver na sessão atual, você não poderá mais armazenar ou acessar os dados dele nessa sessão de jogo. Se o jogador retornar ou jogar o mesmo jogo novamente, você poderá acessar e atualizar seus dados.
O
weak_mapcom escopo de módulo não pode ser completamente lido ou gravado e, portanto, não é possível ler nem substituir os valores de todos os jogadores.Não é possível iterar pelos valores de um
weak_mapou ver quantos jogadores têm um registro noweak_map, porque umweak_mapnão tem comprimento.Uma única Ilha pode ter até duas variáveis persistentes, ou seja, duas variáveis
weak_mapcomplayercomo o tipo de chave.Pelo menos o valor de
weak_mapde uma variável persistente deverá ser uma classe se o limite máximo de variáveis persistentes for atingido.Um único registro
weak_maptem um tamanho máximo de dados de 128 quilobytes (kB) por jogador.
Consulte mais detalhes sobre a persistência em Verse em Como usar dados persistentes em Verse.