そのコードからは本当に高階関数が必要なのかどうかが判断できないので,
とりあえず VBScript で高階関数を実現する方法についてだけ書きます.
実は VBScript は本格的なオブジェクト指向言語に比べれば非力ですが,
クラスを作成することができ, 同じメソッドを備えていれば多態もできます.
VBScript
1Option Explicit
2
3Class CHogeA
4 Public Sub Fuga()
5 MsgBox "A"
6 End Sub
7End Class
8
9Class CHogeB
10 Public Sub Fuga()
11 MsgBox "B"
12 End Sub
13End Class
14
15Dim I
16Dim hogeArray(5)
17
18Set hogeArray(0) = New CHogeA
19Set hogeArray(1) = New CHogeB
20Set hogeArray(2) = New CHogeB
21Set hogeArray(3) = New CHogeA
22Set hogeArray(4) = New CHogeB
23
24For I = 0 To 4
25 hogeArray(I).Fuga()
26Next
これを使って高階関数を再現することができます.
3種類の関数を作り, 関数そのものを変数に入れる代わりに,
3種類の「同じメソッドを持つ」クラスを作り, オブジェクトを変数へ入れるのです.
すると同じメソッド呼び出しで, 入れられたオブジェクトに応じたメソッドが呼び出されるので高階関数の代わりとすることができます.