Abilitare JavaScript per vedere questo sito.

Primitivi

Oggetti

Handle di oggetti

Handle di funzioni

Stringhe

Dichiarazioni auto

Si noti che l'applicazione host può aggiungere tipi specifici per tale applicazione; per ulteriori informazioni, consultare il manuale dell'applicazione.

Primitivi

void

void non è un vero e proprio tipo di dati, ma piuttosto una mancanza di tipo di dati. Può essere usato solo per indicare al compilatore che una funzione non restituisce alcun dato.

bool

bool è un tipo booleano con due soli valori possibili: true o false. Le parole chiave true e false sono costanti di tipo bool che possono essere utilizzate come tali nelle espressioni.

Numeri interi

Tipo

Valore minimo

Valore massimo

int8

-128

127

int16

-32,768

32,767

int

-2,147,483,648

2,147,483,647

int64

-9,223,372,036,854,775,808

9,223,372,036,854,775,807

uint8

0

255

uint16

0

65,535

uint

0

4,294,967,295

uint64

0

18,446,744,073,709,551,615

Poiché il motore di scripting è stato ottimizzato per i tipi di dati a 32 bit, l'uso delle varianti più piccole è consigliato solo per accedere alle variabili specificate dall'applicazione. Per le variabili locali è meglio usare la variante a 32 bit.

int32 è un alias di int e uint32 è un alias di uint.

Numeri reali

Tipo

Range valori

valore positivo più piccolo

massimo digit

float

+/- 3.402823466e+38

1.175494351e-38

6

double

+/- 1.79769313486231e+308

2.22507385850720e-308

15

Nota: questi numeri presuppongono che la piattaforma utilizzi l'IEEE 754 per rappresentare i numeri in virgola mobile nella CPU.

Se si utilizza un numero di cifre superiore a quello massimo, possono verificarsi errori di arrotondamento.

Curiosità: I numeri reali possono avere anche i valori aggiuntivi di 0 positivo e negativo o infinito e NaN (Not-a-Number). Per i float NaN è rappresentato dalla parola dati a 32 bit 0x7fc00000.

Oggetti

Esistono due forme di oggetti: i tipi di riferimento e i tipi di valore.

I tipi di valore si comportano come i tipi primitivi, in quanto vengono allocati sullo stack e deallocati quando la variabile esce dallo scope. Solo l'applicazione può registrare questi tipi, quindi è necessario controllare la documentazione dell'applicazione per ulteriori informazioni sui tipi registrati.

I tipi di riferimento sono allocati sull'heap della memoria e possono sopravvivere alla variabile iniziale che li ha allocati se viene mantenuto un altro riferimento all'istanza. Tutte le classi dichiarate da script sono tipi di riferimento. Le interfacce sono una forma speciale di tipi di riferimento, che non possono essere istanziati, ma possono essere utilizzati per accedere agli oggetti che implementano le interfacce senza conoscere esattamente il tipo di oggetto.

Handle di oggetti

Gli handle degli oggetti sono un tipo speciale che può essere utilizzato per contenere riferimenti ad altri oggetti. Quando si richiamano metodi o si accede alle proprietà di una variabile che è un handle di un oggetto, si accede all'oggetto effettivo a cui l'handle fa riferimento, proprio come se fosse un alias. Si noti che, a meno che non sia inizializzato con l'handle di un oggetto, l'handle è nullo.

Non tutti i tipi consentono di prendere un handle. Nessuno dei tipi primitivi può avere handle e possono esistere alcuni tipi di oggetti che non consentono gli handle. Gli oggetti che consentono o meno gli handle dipendono dall'applicazione che li registra.

I modificatori di tipo handle e array di oggetti possono essere combinati per formare handle ad array, o array di handle, ecc.

Handle di funzioni

Un handle di funzione è un tipo di dati che può essere impostato dinamicamente per puntare a una funzione globale che ha una firma di funzione corrispondente a quella definita dalla dichiarazione della variabile. Gli handle di funzione sono comunemente usati per i callback, cioè quando un pezzo di codice deve essere in grado di richiamare del codice in base ad alcune condizioni, ma il codice che deve essere richiamato non è noto in fase di compilazione.

Per utilizzare gli handle di funzione è necessario innanzitutto definire la firma della funzione che verrà utilizzata a livello globale o come membro di una classe. Una volta fatto ciò, le variabili possono essere dichiarate utilizzando tale definizione.

Ecco un esempio che mostra la sintassi per l'utilizzo degli handle di funzione.

Delegates

È anche possibile prendere handle di funzione per metodi di classe, ma in questo caso il metodo di classe deve essere legato all'istanza dell'oggetto che verrà utilizzato per la chiamata. Questo legame si chiama creazione di un delegato e si effettua eseguendo una chiamata di costrutto per la definizione di funzione dichiarata, passando il metodo della classe come argomento.

Stringhe

Le stringhe contengono un array di byte o di parole a 16 bit, a seconda delle impostazioni dell'applicazione. Normalmente vengono utilizzate per memorizzare il testo, ma in realtà possono memorizzare qualsiasi tipo di dato binario.

Ci sono due tipi di costanti stringa supportate nel linguaggio script avanzato: le normali stringhe quotate e le stringhe di documentazione, chiamate stringhe heredoc.

Le stringhe normali sono scritte tra doppi apici (") o singoli apici ('). All'interno delle stringhe costanti si possono usare alcune sequenze di escape per scrivere valori esatti di byte che potrebbero non essere possibili da scrivere nel normale editor.

Sequenza

Valore

Descrizione

\0

0

carattere nullo

\\

92

barra rovesciata

\'

39

virgolette singole (apostrofo)

\"

34

virgolette doppie

\n

10

avanzamento di riga

\r

13

ritorno a capo

\t

9

carattere di tabulazione

\xFFFF

0xFFFF

FFFF deve essere scambiato con un numero esadecimale da 1 a 4 cifre che rappresenta il valore desiderato. Se l'applicazione utilizza stringhe a 8 bit, sono accettati solo valori fino a 255.

\uFFFF

0xFFFF

FFFF deve essere scambiato con il numero esadecimale che rappresenta il punto di codice unicode.

\UFFFFFFFF

0xFFFFFFFF

FFFFFFFF deve essere scambiato con il numero esadecimale che rappresenta il punto di codice unicode.

Le stringhe heredoc sono progettate per l'inclusione di grandi porzioni di testo senza l'elaborazione di sequenze di escape. Una stringa heredoc è circondata da tripli doppi segni di virgolette (""") e può estendersi su più righe di codice. Se i caratteri che seguono l'inizio della stringa fino alla prima interruzione di riga contengono solo spazi bianchi, questi vengono automaticamente rimossi dal compilatore. Allo stesso modo, se i caratteri che seguono l'ultima interruzione di riga fino alla fine della stringa contengono solo spazi bianchi, anche questi vengono rimossi.

Se più costanti stringa sono scritte in sequenza con solo spazi bianchi o commenti tra di esse, il compilatore le concatena in un'unica costante.

Le sequenze di escape \u e \U aggiungono il punto di codice unicode specificato come sequenza codificata UTF-8 o UTF-16, a seconda delle impostazioni dell'applicazione. Sono accettati solo i punti di codice unicode 5.1 validi, ossia quelli compresi tra U+D800 e U+DFFF (riservati alle coppie surrogate) o superiori a U+10FFFF.

Dichiarazioni auto

È possibile utilizzare "auto" come tipo di dati di una dichiarazione di variabile in stile assegnazione.

Il tipo appropriato per le variabili sarà determinato automaticamente.

Auto può essere qualificato con const per forzare un valore costante:

Per i tipi che supportano gli handle, auto diventerà sempre un handle, perché è più efficiente che fare un'assegnazione di valore. Se per qualche motivo la variabile non deve essere un handle, non utilizzate la parola chiave 'auto'.

Gli handle automatici non possono essere utilizzati per dichiarare i membri della classe, poiché la loro risoluzione dipende dal costruttore.

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC