2004-11-07 (Sun) [長年日記]
_ モジュール関数
ゆうぞうさんとの間で認識に食い違いがあったようだ。 「モジュールの特異メソッドとしてもプライベートインスタンスメソッドとしても定義されているメソッド」という認識でよいですよね?
ゆうぞうさんは、mix-in以外でincludeを使わないらしい。 自分はどうかと言うと、置き場所が決まらない関数的なメソッドをAppName::Utilみたいなモジュールにモジュール関数として突っ込んで includeして使うことがけっこうある。
ただ、名前の衝突に弱いのがincludeの痛いところだ。 *1 C#みたいにメソッドを再定義する時はかならず、
override foo(x) ... end
とする(overrideの代りにdefで再定義しようとするとエラーか警告)、なんてのは嫌がられるだろうな。
*1 includeにかぎらずだけど。そういえば、WEBrick::CGIを継承したクラスで@configというインスタンス変数を使って失敗したこともあったりして。
_ Object#object_id
今さらながらはじめて知った。今はObject#__id__よりもこっちが推奨なのか。
もしや、Object#__send__にも代替が、と思ったけど、こっちはまだないみたい。ruby-talkで議論されていたようだ。 collect派としてはperformを推したいが、ゆうぞうさんはinvokeじゃないの?と言っていた。
-wを使わないと、Object#idのwarningが出ないのは、標準ライブラリでがんがん使われているからだろうな。