Un modulo Verse è un'unità atomica di codice che si può ridistribuire, da cui si dipende e che può evolvere nel tempo senza rompere dipendenze. Puoi importare un modulo nel tuo file Verse per utilizzare le definizioni del codice da altri file Verse.
Un modulo Verse è specificato dalla cartella nella gerarchia dei file del progetto e il nome del modulo è il nome della cartella. Tutti i file .verse presenti nella stessa cartella del file fanno parte di quel modulo Verse e possono accedere alle definizioni degli altri file Verse del modulo, senza importare esplicitamente il modulo.
Un modulo è identificato dal suo percorso; ad esempio, /Verse.org/Verse. I percorsi di Verse forniscono uno spazio dei nomi globale per identificare le cose e si rifanno all'idea dei domini Web. Questi percorsi sono persistenti e univoci e possono essere rilevati da qualsiasi programmatore di Verse.
Per un elenco dei moduli Verse esistenti, vedi Guida API Verse.
Importazione di definizioni da altri file di Verse
Per utilizzare il contenuto di un modulo Verse, devi importare il modulo con il relativo percorso. Ad esempio, il codice seguente importa il modulo Random, identificato dal percorso /Verse.org/Random:
using { /Verse.org/Random }
Quando il modulo Matematica viene importato nel file Verse, puoi utilizzare le relative definizioni di codice, come ad esempio la funzione GetRandomInt()
.
Visibilità delle definizioni in un modulo
La visibilità di un modulo e dei relativi contenuti da altri file Verse viene impostata utilizzando gli specificatori di visibilità, come public
e internal
.
Per impostazione predefinita, la visibilità delle definizioni è interna, il che significa che sono rilevabili solo all'interno del relativo modulo.
Definizione nel file
Oltre ai moduli introdotti dalle cartelle di un progetto, i moduli si possono introdurre all'interno di un file .verse utilizzando la seguente sintassi:
module1 := module:
...
Come per le classi e le funzioni, è supportata anche la sintassi delle parentesi:
module2 := module
{
...
}
Una definizione di modulo può contenere specificatori di visibilità. Ad esempio:
module3<public> := module:
...
L'accesso predefinito di un modulo così definito corrisponde ai moduli introdotti da una cartella: internal
.
Un modulo definito nel file Verse può contenere tutto ciò che è presente al livello superiore di un file .verse. Ciò include le definizioni di funzioni, le definizioni di costanti, varie definizioni di tipo e altre definizioni di moduli. Ad esempio:
module1 := module:
module2<public> := module:
class1<public> := class {}
class2<public> := class{}
Il contenuto di un modulo può essere indicato con un nome punteggiato. Per esempio, class1
può essere indicata al di fuori di module1
come module1.module2.class1
.