お世話になっております。 A.中村です。

On Fri, 12 Feb 1999 01:14:54 +0900
Shugo Maeda <shugo / netlab.co.jp> wrote:

->TWriter/TReaderって何でしたっけ。

たしか(ぉぃぉぃ)delphi開発環境で、Formおよびその上に載ってるobject達が
自分が持ってる永続化したい情報を「託してfileに書いて貰う」のが
TWriterだったと思いました…

->RubyにはJavaのtransientみたいなものはないので、そういう時には_dump/_load
->を自前で定義してやらないといけません。

なるほど。

->みたいに保存しないインスタンス変数を指定できると便利かもしれませんね。

やっと(5日目)Moduleにattrってメソッドがあるのに気づいたんですが、
こいつを再定義かなんかして(いや、これを利用して別途作成の
ほうがいいかな)、デフォの属性アクセスメソッドの作られ方を
変更(ないしは追加)するってのが、出来るのかなーとか…

属性ってあったんですね。失礼しました。これこそdelphiのpropertyとそっくり。

->  def _dump(limit)
->    # @name, @ageのみ保存
->    return Marshal::dump([@name, @age], limit)
->  end

あのー5日目なんで間違えてるかもと思いますが、
Marshal::dumpの第二引数ってlimitじゃなくてportってわけでは
ないんでしょうか?
*がついてない(下記)んで引数の数は2つですよね。
#dump(obj[,port][,limit])
#ていう説明書の定義は、そう理解していいんですよね?ね?

->  def Person._load(str)
->    # loadしたデータを引数にしてコンストラクタを起動
->    return new(*Marshal::load(str))
->  end

*の意味を慌てて説明書読みました。バラすわけですね。
ってことはバラさらないformatにするのも可能っすねきっと。
newが[]を受け取るようにするとかして。

#「クラスは特異メソッドを持つ」ってのが所謂classメソッドのことだと
#気づくのにも時間がかかった(^^;。かっこいいっすRuby。

->class Person
->  transient :nickname
->end

善し悪しはともかく、ここまでいくと本当にdelphiそっくりですね(^^;