gpt4 book ai didi

ruby - 使用 Ruby IO 流重新分配和重新打开之间的区别

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:42 24 4
gpt4 key购买 nike

在 Ruby 中,重新分配 IO 流和使用 IO#reopen 方法有什么区别?换句话说,有什么区别

$stdout = newfile

和:

$stdout.reopen(newfile)

最佳答案

所以基本上重新打开会将 $stdoutnewfile 流相关联 => $stdoutnewfile 将是关联到同一流的两个文件实例。

= 实际上会将 newfile 文件实例分配给 $stdout => $stdout newfile 将是指向同一个 File 实例的两个变量。

后果:

当使用 reopen 时,实例上的任何更改(不影响流本身)都不会反射(reflect)在另一个实例中。

= 示例:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com