2003-08-26 [長年日記]
λ. 東方妖々夢
霊夢と咲夜はなんとかクリア出来たんだが、魔理沙がなかなかクリア出来ない。あ、ノーマルの話ね。Extraとか???とかの話じゃないよ。
λ. enum/flags class for Ruby-GNOME2
Ruby-GNOME2の列挙型とフラグ型の扱いを変更して、整数ではなく、固有のクラスのインスタンスとして扱うことにした(変更作業はまだ全部は終わってないけど)。利点は
- 分かりやすさ。例えば Gtk::Label#justify が整数の0を返しても意味は分かりにくいけど、返ってくるのが固有のクラスのインスタンスならば、inspectすれば誰にでも意味が分かる。(今はinspectのフォーマットは「#<Gtk::Justification left>」みたいな感じ。フォーマットは変更するかも)
- 型安全。「Gtk::Label.new.justify = Gtk::Window::TOPLEVEL」とかはTypeErrorになる。
といったところ。
ただ、flagsのクラスのAPIでいくつか悩んでいる。 悩みの1つはフラグをテストするAPIで、 以下の3つを実験的にすべて実装してあるのだけど、 どれを推奨するのが良いかなぁ。
- 「flags & Gtk::Dialog::MODAL != 0」 (これまで通り。でも「!= 0」というのはやはり野暮ったいなぁ)
- 「flags >= Gtk::Dialog::MODAL」 (ビットの集合として考えた時の包含関係で比較演算子を定義してあるので、 最初のコードとは若干意味が異なるけど、これでもテスト出来る)
- 「flags.modal?」(これが一番Rubyっぽい?)
λ. 最近読んだ漫画
λ. Topology Via Logic 進捗
滞ってる。ようやくScott位相がでてくるあたりまでは進んだ。