Oggetto Enumerator
Consente di enumerare gli elementi di un insieme.
varName = new Enumerator([collection])
Argomenti
varName
Obbligatoria. Nome della variabile a cui l'enumeratore è assegnato.collection
Facoltativo. Qualsiasi oggetto che implementi l'interfaccia IEnumerable, ad esempio una matrice o un insieme.
Note
In JScript ogni insieme è automaticamente enumerabile. Di conseguenza, non è necessario utilizzare l'oggetto Enumerator per accedere ai membri di un insieme. È possibile accedere a qualsiasi membro direttamente utilizzando l'istruzione for...in. L'oggetto Enumerator rimane comunque disponibile per garantire compatibilità con le versioni precedenti.
La differenza tra insiemi e matrici è rappresentata dal fatto che i membri di un insieme non sono accessibili in modo diretto. Inoltre, anziché utilizzare gli indici, come nel caso delle matrici, in un insieme è possibile soltanto spostare il puntatore dell'elemento corrente sul primo elemento o su quello successivo.
L'oggetto Enumerator, che presenta un comportamento simile a quello dell'istruzione For...Each in VBScript, consente di accedere a qualsiasi membro di un insieme.
In JScript è possibile creare un insieme definendo una classe che implementa IEnumerable. Gli insiemi possono essere creati anche utilizzando un altro linguaggio, quale Visual Basic, o un oggetto ActiveXObject.
Esempio 1
Nel seguente esempio di codice viene utilizzato un oggetto Enumerator per stampare le lettere e i nomi delle unità disponibili, se presenti:
// Declare variables.
var n, x;
var fso : ActiveXObject = new ActiveXObject("Scripting.FileSystemObject");
// Create Enumerator on Drives.
var e : Enumerator = new Enumerator(fso.Drives);
for (;!e.atEnd();e.moveNext()) { // Loop over the drives collection.
x = e.item();
if (x.DriveType == 3) // See if network drive.
n = x.ShareName; // Get share name
else if (x.IsReady) // See if drive is ready.
n = x.VolumeName; // Get volume name.
else
n = "[Drive not ready]";
print(x.DriveLetter + " - " + n);
}
A seconda del sistema in uso, l'output sarà simile al seguente:
A - [Drive not ready]
C - DRV1
D - BACKUP
E - [Drive not ready]
Esempio 2
Il codice riportato nell'esempio 1 può essere riscritto ed eseguito senza utilizzare l'oggetto Enumerator. In questo caso, l'accesso ai membri di un'enumerazione viene effettuato in modo diretto.
// Declare variables.
var n, x;
var fso : ActiveXObject = new ActiveXObject("Scripting.FileSystemObject");
// The following three lines are not needed.
// var e : Enumerator = new Enumerator(fso.Drives);
// for (;!e.atEnd();e.moveNext()) {
// x = e.item();
// Access the members of the enumeration directly.
for (x in fso.Drives) { // Loop over the drives collection.
if (x.DriveType == 3) // See if network drive.
n = x.ShareName; // Get share name
else if (x.IsReady) // See if drive is ready.
n = x.VolumeName; // Get volume name.
else
n = "[Drive not ready]";
print(x.DriveLetter + " - " + n);
}
Proprietà
L'oggetto Enumerator non dispone di alcuna proprietà.
Metodi
Metodi dell'oggetto Enumerator