用块打开文件之后会关闭它吗?
File.open('test.txt') do |txt|
...
end
Run Code Online (Sandbox Code Playgroud)
我想知道在这段代码的末尾是否关闭了此文件,或者我是否仍然应该调用:
File.close()
Run Code Online (Sandbox Code Playgroud)
我想知道的是这个文件在这段代码的末尾关闭还是我仍然应该调用:
是的,它是关闭的。IO::open说
没有关联的块,IO.open 是 ::new 的同义词。如果给出了可选的代码块,则会将 io 作为参数传递,当代码块终止时,IO 对象将自动关闭。在这种情况下,::open 返回块的值。
f = File.open('doc.txt') do |file|
file
end
f.closed? # => true
Run Code Online (Sandbox Code Playgroud)
还是我应该继续打电话:
File.close() ?
是的,如果您的块file在终止之前返回对象,就像我上面的代码一样,或者如果您将file块内的对象分配给局部变量,如下所示:
f = nil
File.open('doc.txt') do |file|
f = file
# your code
end
f.closed? # => true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
444 次 |
| 最近记录: |