$deferr、$defout 的用途是什么以及为什么没有 $defin
$deferr、$defout 的用途是什么?如果有 $stderr、$stdout 和 $stdin,还有 STDIN、STDOUT 和 STDERR,为什么没有 $defin
更改其中任何一个都不会改变其他的
For what purpose are there $deferr, $defout and why there is no $defin if there are $stderr, $stdout and $stdin, and also STDIN, STDOUT and STDERR
Changing any of them will not change others
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
STDIN、STDOUT 和 STDERR 是全局流常量(即默认值)。
$stdin、$stdout 和 $stderr 是初始化为流常量值的全局变量。 这允许您在运行时更改它们的值(例如,将标准输出更改为备用输出设备)。
$defout 是一种创建“就地”输出流的方法。 这里有关于 ruby 邮件列表的简短讨论:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/67822
显然你不能有就地输入流,所以没有 ' $定义。
但是,这主要是出于历史兴趣; 我相信随着 Ruby 1.8.2 的发布,$defout 和 $deferr 已被弃用,当前的最佳实践是仅使用 $stdin、$stdout 和 $stderr。
STDIN, STDOUT and STDERR are global stream constants (i.e. default values).
$stdin, $stdout and $stderr are global variables initialised to the value of the stream constants. This allows you to change their values at runtime (e.g. to change stdout to an alternative output device).
$defout is a way of creating an 'in-place' output stream. There is a brief discussion on the ruby mailing list here:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/67822
Obviously you can't have an in-place input stream, so there is no '$defin'.
However, this is mostly for historical interest; I believe $defout and $deferr were deprecated some time ago with the release of Ruby 1.8.2, and current best practice is to use only $stdin, $stdout and $stderr.