|
[ruby-list:42118] Re: puts,printの出力をファイルにも出力するには: msg#00149lang.ruby.japanese
永井 様, まつもと 様 ご回答ありがとうございます。 永井 様の案ではmethod_missingを利用して転送している点と 案2では$stdout.add(f1, f2)といった特徴がある点が参考となりました。 ありがとうございます。 まつもと 様曰く >要するにレシーバを持たないprintやputsは内部処理を適当に行っ >てくれるので、出力先($stdout)にwriteメソッドしか要求しない >(のでそれだけ用意すればよい)が、 ですが、だいぶ前に「Ruby プログラム入門」と言う本を読んだときに puts,printなどはレシーバであるmainがオブジェクトの転送を適宜 おこなうと書いてありましたが、このことを意味するのでしょうか? まつもと 様曰く >直接 $stdout.print とか >$stderr.print とした場合には、それらに向けて出力するようなメ >ソッドを別途用意する必要があるということですね。 例示したコード >defout = Object.new >defout.instance_eval{@ofile=open("log.txt", "w")} >class <<defout > def write(str) > STDOUT.write(str) > @ofile.write(str) > end > public :puts,:print #追加 >end mainの転送機能が機能しないので、別途メッッドを用意する代わりに Kernelのputs,printの呼び出しができるようにpublicを追加している。 その変更は特異メソッドが定義された上記のオブジェクトに限定されて いると理解しました。 間違った解釈であれば訂正の上ご指導ください。 普段奥深くは考えず利用しているのでちょっと変わったことをしようとする と躓きます:-) お手間をお掛けしますが、宜しくお願いします。 == Iwasaki == Email: ih000667@mb.taiyokogyo.co.jp
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42117] Re: puts,printの出力をファイルにも出力するには, Yukihiro Matsumoto |
|---|---|
| Next by Date: | [ruby-list:42119] Re: puts,printの出力をファイルにも出力するには, Yukihiro Matsumoto |
| Previous by Thread: | [ruby-list:42113] [Q]式中の改行と演算子位置 Was: [Q] perl の m//g に相当する処理を ruby で行ないたい, ITSUMI ken-ichi |
| Next by Thread: | [ruby-list:42119] Re: puts,printの出力をファイルにも出力するには, Yukihiro Matsumoto |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |