こんにちは、GNUE(鵺)です。 WATANABE Hirofumi: >わたなべです. (中略) >require 'dbm' > >class MyDBM < DBM > def MyDBM.open file, mode = 0666 ~~~~~~ > puts file > super > end >end > >db = MyDBM.open("test") >db.close > >問題ないと思うんだけど? あ、なるほど特異メソッドにするのですね。 def self.open で定義したらうまく動作するようになりました。 そっか、ruby の特異メソッドってこういう風に使うんですね。 インスタンス・オブジェクトのときに使うものだと勘違いして まいた。 >:それと、Dir のサブクラスをつくったとき、mkdir などのクラス >:メソッドがそのサブクラスのメソッドから使えません。 > >class MyDir < Dir > def MyDir.mkchdir dir > mkdir dir > chdir dir > puts pwd > end >end > >MyDir.mkchdir "hoge" > >こっちもちゃんと動いてますね. > >どのように作ったんでしょう? こっちも、def self.mkchdir と特異メソッドにしたらうまく動作する ようになりました。 でも、クラスメソッドってクラスメソッドからしかアクセスできないん ですね。逆にメソッドをクラスメソッドから呼ぼうとしたらエラーにな りました。 ありがとうございます(_ _)>わたなべ 少しずつ ruby の特性がわかってきたように思います。 # でも、Web Page のドキュメントだけだとわかりづらい(^^; # 8月出版の ruby 本が待ち遠しい... --- GNUE(鵺)