こんにちは、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(鵺)