Verse utilizza int
come tipo per memorizzare e gestire gli interi. Un int
in Verse può contenere un numero positivo, un numero negativo o zero e non ha una componente frazionaria. Gli interi supportati vanno da -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807, inclusi.
Puoi includere valori int
predefiniti nel codice come int
letterali. Un letterale int
è un numero intero nel codice.
I seguenti sono esempi di come si possono creare costanti di numeri interi e variabili di numeri interi con i letterali int
:
# Questa variabile non cambierà mai, perché è universalmente corretta.
AnswerToTheQuestion : int = 42
# Una faretra di frecce costa un numero specifico di monete che non può essere modificato:
CoinsPerQuiver : int = 100
# Una faretra di frecce contiene un numero specifico di frecce che non può essere modificato:
ArrowsPerQuiver : int = 15
# Il giocatore possiede attualmente 225 monete e 3 frecce. Questi valori non possono essere modificati.
var Coins : int = 225
var Arrows : int = 3
# Il gioco tiene traccia del numero totale di acquisti eseguiti dal giocatore.
# Finora il giocatore non ha comprato nulla.
var TotalPurchases : int = 0
Operazioni int
Il tipo int
supporta le operazioni matematiche e i confronti con altri numeri interi.
Matematica
In Verse puoi utilizzare le quattro operazioni matematiche di base con i numeri interi: +
per l'addizione, -
per la sottrazione, *
per la moltiplicazione e /
per la divisione.
Per i numeri interi, l'operatore /
è fallibile e il risultato è di tipo razionale, se riesce.
Il tipo razionale può essere utilizzato solo come parametro delle seguenti funzioni:
Floor()
: Arrotonda per difetto il valore razionale al numero intero più vicino.Ceil()
: Arrotonda per eccesso il valore razionale al numero intero più vicino.
Il codice seguente utilizza una divisione di un numero intero per determinare quante frecce può acquistare il giocatore con le sue monete. La divisione di un numero intero viene utilizzata in un'espressione if
perché la divisione di un numero intero è fallibile e quindi deve essere in un contesto di errore:
if (NumberOfQuiversYouCanBuy : int = Floor(Coins / CoinsPerQuiver)):
NumberOfArrowsYouCanBuy : int = NumberOfQuiversYouCanBuy * ArrowsPerQuiver
Puoi inoltre combinare gli operatori per le operazioni matematiche di base (addizione, sottrazione e moltiplicazione) e aggiornare il valore di una variabile. Questi operatori combinati equivalgono ad assegnare il risultato al primo operando dell'operazione matematica. Il codice seguente utilizza la matematica int
per vendere le frecce del giocatore in cambio di monete:
# Prendi le monete dal giocatore. Ciò può portare il giocatore a un valore negativo di
# monete, se non verifichi in anticipo che il giocatore ne disponga a sufficienza.
set Coins -= CoinsPerQuiver
# Fornisci le frecce al giocatore.
set Arrows += ArrowsPerQuiver
# Considera questa operazione come un acquisto. Non abbiamo una variabile corrispondente.
set TotalPurchases += 1
L'operatore /=
non è supportato per int
, poiché il risultato della divisione di un numero intero è di tipo razionale e quindi non può essere assegnato a un int
.
Interi con segno
Un intero con segno è un valore che può essere positivo, negativo o uguale a zero. L'operatore -
si può utilizzare per negare un intero se -
viene visualizzato prima dell'intero, ad esempio -3
.
Puoi anche utilizzare l'operatore +
prima di un intero per aiutare ad allineare visivamente il codice, ma ciò non cambierà il valore dell'intero.
# Questa è una soluzione alternativa per vendere frecce al giocatore. Risulta
# funzionalmente identica al codice della sezione Matematica.
set Coins += -CoinsPerQuiver
set Arrows += +ArrowsPerQuiver
set TotalPurchases += +1
Confronto
Puoi utilizzare l'operatore fallibile =
per verificare se due interi sono uguali e l'operatore fallibile <>
per verificare la disuguaglianza.
Poiché i numeri sono ordinati, puoi utilizzare l'operatore fallibile <
per verificare se un intero è minore di un altro intero e l'operatore fallibile >
per verificare se un intero è maggiore di un altro.
Puoi utilizzare l'operatore fallibile <=
per verificare se un intero è minore o uguale a un altro intero e l'operatore fallibile >=
per verificare se un intero è maggiore o uguale a un altro intero.
# Verifica che il giocatore possa permettersi questo acquisto.
if (Coins >= CoinsPerQuiver):
# Il giocatore può permetterselo. Procedi con l'acquisto
set Coins -= CoinsPerQuiver
set Arrows += ArrowsPerQuiver
set TotalPurchases += 1
Libreria standard
La libreria standard fornisce funzioni per aiutare a creare e utilizzare gli interi, le strutture e le funzioni matematiche comuni. Per maggiori dettagli su queste funzioni, consulta la guida API di Verse.
Rappresentazioni alternative di numeri interi
Per rappresentare i numeri interi puoi anche utilizzare il sistema numerico esadecimale, che è a base 16, invece del sistema numerico decimale che utilizza la base 10. Ciò significa che i valori esadecimali sono rappresentati con le cifre 0-9
e le lettere A-F
. Ad esempio, 0x7F
è uguale a 127
e 0xFACE
è uguale a 64206
.
Dettagli di implementazione
In un aggiornamento futuro, int
rappresenterà semanticamente un intero di qualsiasi dimensione, ma attualmente un int
in Verse è implementato come un intero con segno a 64 bit. Fino a questo aggiornamento, un int
deve essere compreso nell'intervallo [-2^63
, ... , -1
, 0
, 1
, ... , 2^63 - 1
] e gli interi, compresi i risultati delle operazioni matematiche che non rientrano in questo intervallo per le dimensioni degli int, produrranno un errore di runtime chiamato overflow di intero.
Sebbene gli interi abbiano attualmente queste limitazioni, il codice Verse con gli interi che scrivi oggi risulterà semanticamente uguale a quello in cui gli interi potevano avere una precisione arbitraria.
Tipo persistente
I valori interi sono persistenti, ovvero è possibile utilizzarli nelle variabili weak_map
con ambito modulo e far sì che i loro valori siano mantenuti tra le sessioni di gioco. Per maggiori dettagli sulla persistenza in Verse, consulta Utilizzo dei dati persistenti in Verse.