加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 重新打开IO流而不是使用新流

发布时间:2020-12-17 02:03:34 所属栏目:百科 来源:网络整理
导读:在 Ruby-Docs中,它提供了以下示例: f1 = File.new("testfile")f2 = File.new("testfile")f2.readlines[0] #= "This is line onen"f2.reopen(f1) #= #File:testfilef2.readlines[0] #= "This is line onen" 我的问题是为什么当你可以f2.close和f1.readline
在 Ruby-Docs中,它提供了以下示例:

f1 = File.new("testfile")
f2 = File.new("testfile")
f2.readlines[0]   #=> "This is line onen"
f2.reopen(f1)     #=> #<File:testfile>
f2.readlines[0]   #=> "This is line onen"

我的问题是为什么当你可以f2.close和f1.readlines [0]时重新打开f2?使用新流重新打开是否有任何优势?

解决方法

我曾经和IRB上的一些开发人员谈过,我得到的回应是它主要用于更改$std变量以修改put和print输出等方法…

$stdout.reopen(File.open('log'))
puts 'hello world'

使用它而不是……的原因

$stdout = File.open('log')

……虽然有点在空中.我有一个开发人员说,直接分配与一些ruby的C函数不能很好地配合.我对C不太了解,也不能多说这个,但他给我指了一些minitest source来看一个使用它的例子.然而,显然即使是源码已经切换到直接分配与重新开放,因为开发人员最后看了它.

总而言之……从它的外观来看,IO#reopen可能毫无用处,但我很乐意听到反对此事的争论.

更新

好的,所以我重读了文档,看到有第二组opts重新打开:

reopen(path,mode_str) → ios

这实际上似乎有点有用,而不是重新打开(other_IO)→ios选项.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读