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选项. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |