Enumerator オブジェクト

コレクション内の項目を列挙する手段を提供します。

varName = new Enumerator([collection])

引数

  • varName
    必ず指定します。 列挙子を代入する変数名。

  • collection
    省略可能です。 配列やコレクションなど、IEnumerable インターフェイスを実装するオブジェクト。

解説

コレクションは JScript で自動的に列挙できます。 したがって、コレクションのメンバーにアクセスするために、Enumerator オブジェクトを使用する必要はありません。 for...in ステートメントを使用して、メンバーに直接アクセスできます。 Enumerator オブジェクトは下位互換性を維持するために用意されています。

コレクションは、そのメンバーに直接アクセスできないという点で配列とは異なります。 配列の場合はインデックスを使って項目にアクセスできますが、コレクションでは、現在の項目を指すポインターをコレクション内の最初の項目に移動したり、次の項目に移動したりするしかありません。

Enumerator オブジェクトは、コレクション内の任意のメンバーにアクセスする手段を提供するオブジェクトで、VBScript の For...Each ステートメントと同じように動作します。

IEnumerable を実装するクラスを定義して、JScript でコレクションを作成できます。 コレクションは、他の言語 (Visual Basic など) や ActiveXObject オブジェクトを使用しても作成できます。

例 1

次のコードは Enumerator オブジェクトを使用して、使用可能なドライブ文字と、名前が使用できる場合はその名前を出力します。

// 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 - [Drive not ready]
C - DRV1
D - BACKUP
E - [Drive not ready]

例 2

例 1 のコードは、Enumerator オブジェクトを使用せずに、次のように記述することもできます。 この場合、列挙体のメンバーには直接アクセスできます。

// 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);
}

プロパティ

Enumerator オブジェクトには、プロパティはありません。

メソッド

Enumerator オブジェクトのメソッド

必要条件

Version 3

参照

参照

new 演算子

for...in ステートメント