僕の周りでは余りVBScriptは人気が無いのだけれど、
ここら辺の、スクリプト言語に望む点を満たしているので、自分としてはそんなに嫌いではない。ただDictionaryオブジェクトは、もうちょっと融通が利くと良いのになぁとは思っていた。
今日、たまたまVBScriptで可変長配列クラスの作成というウェブページを見付けたのだが、非常にスマートな実装でびっくりした。
Class Vector
' 内部配列
Private items_()
' 要素の追加
Public Sub Add(ByVal item)
' 現在の配列サイズと要素数が等しい場合、サイズ変更
If UBound(items_) = count_ - 1 Then
ReDim Preserve items_( UBound(items_) * 2 + 1 )
End If
' 値を格納
Call SetValue(items_(count_), item)
' 保持しているサイズを繰り上げ
count_ = count_ + 1
End Sub
' 要素の取得
Public Default Property Get Item(ByVal index)
Call SetValue(Item, items_(index))
End Property
' var に値を設定
Private Sub SetValue(ByRef var, ByVal value)
If IsObject(value) Then
Set var = value
Else
var = value
End If
End Sub
End Class
特に、上記の抜粋箇所で、VB特有の煩わしいSetステートメントの有無を吸収する実装をやっている。こういう書き方があるのか、と目から鱗が落ちる思いだ。
この後、別のページで解説しながらIteratorも取れるように改良して、あっさりと完成している。
これまでDictionaryで作っておいて、Keysメソッドでキー配列を取ってからFor Eachで全要素をなめていたけど、今日見たVectorクラスの方がスマートだ。今度からは、これを使おう。
それにしても、この解説を書いた人は凄いな。論理的に、「現状ここまで完成していて、目的を達するにはこういう機能が欲しい、その為にはこうやって実装しよう」と順序立ててきちんと書いてある。こうやってコードレベルで明快にVBScriptを解説出来る人は、うちの会社には居ないなぁ・・・。皆何となく、プロジェクトがWindows Serverでやる事になったから、WSHで管理してASPで動かそうかっていうレベルだし(自分も含めて)。
Dynamic Scriptingが閉鎖してしまったんで、Deep Decryptionの中の人には、どんどん有用なノウハウを伝授してもらいたい。
最近のツッコミ
参号館
日記(ariyasacca)
私にも分かる話をして欲しいでよ<br>アニメとかさあ。<br>もう嫌がらせレスの部類ですね
残念ながらアニメは、てんで分からないんですよ。最後に見たのが中学生の頃のママレードボーイか赤ずきんチャチャですからね、単純に。ジブリなら見ますけども。