From: Takashi Nakai Date: 1998-10-16T22:36:21+09:00 Subject: [ruby-list:10154] Re: デストラクタ (?) 中井と申します。 回答ありがとうございます。 ------------------------------------------------------- matz@netlab.co.jp (Yukihiro Matsumoto) さんは書きました: >まつもと ゆきひろです > > : > : > >さらに,特にPythonに見られるんですが. > > f = open(path, mode) > #... > f = None > >でfに代入した瞬間にcloseされることを期待するようなコーディン >グを助長するのは,ダメとは言わないものの心苦しいです. ------------------------------------------------------- 最近、私は仕事の上でC++を使う機会が多いのですが、C++(やPerl) では、「ブロックから抜けるところで終了処理をする」ことを期待 したコーディング(イデオム?)があります。 上記の例を疑似コードで書きますと { : f1 = open( .... ); : { f2 = open( .... ); : } <--- f2 ここで close : } <--- f1 ここで close まあ、C++の実状としては、(参照カウント式の)メモリー管理を 実現するためといえそうなんですけど... あと Perlでいえば SelectSaver モジュールなんてのもありますね まあ、そもそもこれは select なんて機能を必要とするデザインが 悪いんですけど... こう考えてくると、 ------------------------------------------------------- >まず,発生条件としては資源の不足が検出できるなら,rubyのレベ >ルで明示的にGCをスタートさせれば良いと思います.つまり,その >時点で GC.start ですね. ------------------------------------------------------- ですね。 :-) それでは、失礼いたします。 -- T.NAKAI nakai@m1.sys.to.casio.co.jp