在ruby中,重新分配io流和使用IO#reopen
方法有什么区别?换言之,两者的区别是什么
$stdout = newfile
还有:
$stdout.reopen(newfile)
最佳答案
所以基本上,reopen将$stdout
与newfile
流关联,而$stdout
将是两个与同一流关联的文件实例。newfile
实际上会将=
文件实例分配给newfile
$stdout
并且$stdout
是指向同一文件实例的两个变量。
后果:
当使用newfile
时,实例上的任何更改(不影响流本身)都不会反映在另一个实例中。reopen
示例:
a = File.new('name')
b = File.new('name')
a.lineno #=> 0
b.lineno #=> 0
a.lineno = 3
a.lineno #=> 3
b.lineno #=> 0
b = a
a.lineno #=> 3
b.lineno #=> 3
a.lineno = 0
a.lineno #=> 0
b.lineno #=> 0
=
示例:a = File.new('name')
b = File.new('name')
a.lineno #=> 0
b.lineno #=> 0
a.lineno = 3
a.lineno #=> 3
b.lineno #=> 0
b.reopen(a)
a.lineno #=> 3
b.lineno #=> 3
a.lineno = 0
a.lineno #=> 0
b.lineno #=> 3
关于ruby - 重新分配和使用Ruby IO流重新打开之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6683328/