民斗です。 [Subject: [ruby-list:9026] Re: making extension module] [Date: Tue, 11 Aug 1998 12:34:40 +0900 From:Yukihiro Matsumoto] > |MySQL というデータベースを Ruby からアクセスできるようにしようと > |思って、C で拡張モジュールを書いてみました。 > 実は昨日そのページを読んでいたのでした. > # We are watching you. # きゃ〜ハズカシ〜 > |1. 関数によっては、C で記述する必要のないものがあるので、クラス中の > | 一部の関数を Ruby で書きたいのですが、同一のクラスを関数によって > | C で記述したり、Ruby で記述したりできるのでしょうか。 > できますよん.Rubyはいいかげんな言語で同じクラスを何度も定義 > できるんです(2度目以降は定義の追加).ですから,まずCでMySql > というクラスを定義して,残りは追加するというのでどうでしょう. おお、そんなことができたんですね。クラスの2重定義になっちゃうから 駄目だと思い込んでいました。目からウロコです。 # ボロボロボロ… > |2. C++ のデストラクタのようなものは Ruby ではどのように書くのでしょうか。 > | C での拡張モジュール中では、Data_Make_Struct() の第4引数で関数を指定 > | できるようですが、Ruby で作成したクラスの場合、どのように書くのか > | わかりませんでした。 > RubyレベルではGCがあるので,明示的にオブジェクトを破棄する必 > 要はあまりないはずです.どーしても,GCのタイミングでなんらか > の処理が行いたい場合には lib/final.rb を使うワザはありますけ > どね.実例としては lib/tempfile.rb を参照して下さい.でも, > 分かるかなあ.必要でしたら更に解説します. これは実は、ちょっと疑問に思っただけで、必要ってわけじゃないです。 final.rb, tempfile.rb も見てみます。 ありがとうございました。 -- 民斗 <tommy / valley.ne.jp>