2011-05-15-01-Tuple の追加
>> Site top >> weblog >> 月別アーカイブ >> 2011年05月のlog >> 2011-05-15-01-Tuple の追加
最終更新日付:2011/05/15 01:00:00
Tuple の追加
2011 年 05 月 15 日
5年振りに、VBGeneric をイジろうと思いたった。
今回やろうと思ったのは、Tuple クラスの追加だ。C++ 0x に追加される予定だということで、しばらく前から気にはなっていた。そして、ちょっと変則的ではあるものの、VBGeneric に取り込むことが可能だという判断ができたので、今回手を動かしてみたわけだ。
具体的な使い方としては、Utility の新設メソッド MakeTupleを使ってコンストラクトするのが一番簡単だ。ParamArray で受け取るので、任意個数の要素を渡すことができる。
Dim tpl As Tuple Set tpl = Utility.MakeTuple("kagelow", 36, "Tokyo")
もちろん Visual Basic なので、内部的には Variant 配列を使うことしかできない。だから、GVector とやっていることは似たようなものだ。要素へのアクセスも、規定のプロパティになっている At を使う。
Dim name As String Dim age As Long Dim place As String name = tpl(0) age = tpl(1) place = tpl(2)
ただし、Tie メソッドを使ってまとめて取得することも可能。
Call tpl.Tie(name, age, place)
等値検査や順序付けの方法は Pair と同じ。Utility の MakeTupleEqual とMakeTupleLess を使う。クラス型が要素でなければパラメータは何もいらない。明示したければ Nothing だ。
Dim eq As BinaryFunction Dim ls As BinaryFunction Set eq = Utility.MakeTupleEqual(Nothing, Nothing, Nothing) Set ls = Utility.MakeTupleLess(Nothing, Nothing, Nothing)
いずれにせよ、VBGeneric がこれまでそうであったように Variant Based Generic なので、タイプセーフネスはゼロだ。要素数が3以上の組みを作る場合、それだけでクラスを1つ作成する必要があったが、Tuple でなんとかできる場合があるだろう。
問題は、いつリリースするかだ‥‥‥HTML Help で作成していたドキュメントを全面的に刷新したいし。
コメント
このページのタグ
Page tag : STLとその移植
Copyright(C) 2005-2021 project-enigma.
Generated by CL-PREFAB.