Condividi tramite


Oggetto Enumerator

Aggiornamento: novembre 2007

Consente di enumerare gli elementi di un insieme.

varName = new Enumerator([collection])

Argomenti

  • varName
    Obbligatorio. 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

Requisiti

Versione 3

Vedere anche

Riferimenti

Operatore new

Istruzione for...in