$deferr、$defout 的用途是什么以及为什么没有 $defin

发布于 2024-07-29 11:12:45 字数 121 浏览 5 评论 0原文

$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

盛夏尉蓝 2024-08-05 11:12:45

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文