ariyasacca

カテゴリ一覧

Biz | SF | Software | tDiary | Web | ゲーム | サバティカル | スポーツ | ミステリ | メタル | 健康 | 投資 | 携帯 | 時事ネタ | 死生観 | 資格 | 雑記
2004|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|

2006-08-21 (月) [長年日記]

[雑記][Web] VBScriptでコレクション

僕の周りでは余り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の中の人には、どんどん有用なノウハウを伝授してもらいたい。

本日のツッコミ(全2件) [ツッコミを入れる]
ユーキさん (2006-08-22 (火) 00:04)

私にも分かる話をして欲しいでよ<br>アニメとかさあ。<br>もう嫌がらせレスの部類ですね

雷悶 (2006-08-22 (火) 00:15)

残念ながらアニメは、てんで分からないんですよ。最後に見たのが中学生の頃のママレードボーイか赤ずきんチャチャですからね、単純に。ジブリなら見ますけども。


最近のツッコミ

  1. 雷悶 (2023-06-24(土)22:25)「新大阪駅で降りると必ず視界に入るサムティ行くしかないのか~?」
  2. ブリネル (2023-06-24(土)20:58)「次はサムティアンド箕面ビールツアーしかないっしょ〜 DIE WITH ZERO〜」
  3. 雷悶 (2023-03-08(水)19:02)「10年後にはリゾマンを購入している筈っしょ~(言うだけ)」

参号館  の中の  日記(ariyasacca)

トップ «前の日記(2006-08-20 (日)) 最新 次の日記(2006-08-22 (火))» 編集