僕の周りでは余り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>もう嫌がらせレスの部類ですね
残念ながらアニメは、てんで分からないんですよ。最後に見たのが中学生の頃のママレードボーイか赤ずきんチャチャですからね、単純に。ジブリなら見ますけども。