在ruby中,重新分配io流和使用IO#reopen方法有什么区别?换言之,两者的区别是什么

$stdout = newfile

还有:
$stdout.reopen(newfile)

最佳答案

所以基本上,reopen将$stdoutnewfile流关联,而$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/

10-09 00:48