VBA用LINQ(作成中)
VBAでLINQ to Objects 「っぽい」ことができるものを作成中。
→OneDrive内の「M_Sample」モジュール
GitHub - imihito/VBALinq(碌に使ったことがないのでちゃんと使えてるかどうか…)
基本方針
やりたいこと
VBAで要素の集合に対してLINQ to Objects 「風」に処理をしたい。
考えないこと
型安全性
ダックタイピング上等、レイトバインディング・リフレクション万歳!の精神。
遅延実行
処理自体の遅延は出来そうだけど、処理が面倒になりそうなので考えない。
処理速度
現状(170820)では、効率の悪い処理をしているがとりあえず置いておく。
モジュール構成案
- 各種LINQ風メソッドを持つクラス
- デリゲートとして使うためのクラス群(後述)
- 補助処理を入れた標準モジュール
VBAに無い要素と代替案
IEnumerableインターフェイス
対象要素が列挙可能かどうかわからないので、とりあえずFor Eachしてみる。
作成するクラスにはVBA.Collectionを内蔵させて、そのイテレータを使ってFor Eachができるようにする。
デリゲート
「実行可能な処理」を示すインターフェイスと、それを実装したクラス群を作成し、そのクラス群を組み合わせて処理を示す形とする。