代码之家  ›  专栏  ›  技术社区  ›  tig Charlie Martin

为什么会有$deferr、$defout,为什么没有$defin

  •  1
  • tig Charlie Martin  · 技术社区  · 17 年前

    如果有$stderr、$stdout和$stdin,还有stdin、stdout和stderr,为什么没有$defin

    1 回复  |  直到 17 年前
        1
  •  7
  •   ire_and_curses    17 年前

    STDIN、STDOUT和STDERR是全局流常量(即默认值)。

    $stdin、$stdout和$stderr是初始化为流常量值的全局变量。这允许您在运行时更改其值(例如,将标准输出更改为备用输出设备)。

    $defot是创建“就地”输出流的一种方法。这里有一个关于ruby邮件列表的简短讨论:

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

    显然,您不能有一个就地输入流,因此没有“$defin”。

    然而 ,这主要是为了历史利益;我相信$defot和$deferr在Ruby 1.8.2发布前就已经被弃用了,目前的最佳实践是只使用$stdin、$stdout和$stderr。

    推荐文章