From: matz@... (Yukihiro Matsumoto) Date: 1997-08-27T12:47:25+09:00 Subject: [ruby-list:3840] Re: SyslogSendmail class まつもと ゆきひろです In message "[ruby-list:3839] Re: SyslogSendmail class" on 97/08/27, TAKAGI Hiromitsu writes: | > * def date; @date endなどはattr :dateの方がrubyらしい? | |これは知りませんでした。こんなふうに書かなきゃいけないのはおかしいと |おもいつつ。でもドキュメントのどこを読めばよかったのだろう…。 Moduleのところに書いてあるんですねえ.こういうノウハウを記述 したドキュメントを整備しないといけないのが一目瞭然ですね. |ところで、複数をまとめて | attr :date :time :process_name |のようには書けないのですね。そういうものではない?? attrはread-witeであるかどうかを示す第2引数を取るメソッドなん です.一度に指定できた方が良いんですかねえ. |……それから、ぜんぶ attr :... に置き換えてみたところ動かなくなって |しまいました。調べてみたところ class SyslogSendmail の | def id; @id end |だけは、「attr :id」にしちゃまずいようです。 |「def ...; @... end」「attr :...」の両者はまったく同じ意味というわけで |はないのでしょうか? というのはですね.attrはメソッドがすでに定義されているとなに もしない(改めて再定義しない)んですが,idというメソッド(オブ ジェクトIDを返す)がすでに存在しているからですね.これは上 書きした方が良いでしょう,仕様を変えましょう. # でもやっぱりidは名前を変えた方が良いかも. | > * createで適切なクラスの生成を行っている部分が若干不自然な | > 気がする.どうするのが良いのかぱっと思いつきませんが. | |これは ruby の問題というよりデザインパターンの問題でしょうか。 | |ruby だと new を再定義できるのでそれを使うということも考えたのですが、 |Syslog.new したのにそのサブクラスの SyslogSendmail のインスタンスが |返されるというのもどうかとおもいまして…。 そうなんですよねえ.多分,一度生成してみて駄目だったら別のク ラスで…というやり方が気持ち悪かったんでしょう.lineを解析す るメソッドが独立していれば,もうちょっと気分が良いかも. まつもと ゆきひろ /:|)