1

$ deferr、$ defoutはどのような目的で使用され、$ stderr、$ stdout、$ stdin、およびSTDIN、STDOUT、STDERRがある場合に$definが存在しないのはなぜですか。

それらのいずれかを変更しても、他は変更されません

4

1 に答える 1

6

STDIN、STDOUT、および STDERR は、グローバル ストリーム定数 (つまり、デフォルト値) です。

$stdin、$stdout、および $stderr は、ストリーム定数の値に初期化されるグローバル変数です。これにより、実行時に値を変更できます (たとえば、stdout を別の出力デバイスに変更するなど)。

$defout は、「インプレース」出力ストリームを作成する方法です。ruby メーリングリストで簡単な議論がここにあります:

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/67822

明らかに、インプレース入力ストリームを持つことはできないため、「$defin」はありません。

ただし、これは主に歴史的な関心のためです。$defout と $deferr は、Ruby 1.8.2 のリリースとともに廃止されたと思います。現在のベスト プラクティスは、$stdin、$stdout、および $stderr のみを使用することです。

于 2009-07-27T23:12:44.200 に答える