gpt4 book ai didi

ruby - 带 block 和不带 block 的 File.open() 有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:04 25 4
gpt4 key购买 nike

我有两个问题:1 - 我不明白 that 的含义,此代码返回:

File.open("a.txt") do |i|
puts i
end

请解释一下。

2 - 请解释一下这段代码和下面的代码有什么区别代码:

File.open("a.txt").each do |i|
puts i
end

谢谢

最佳答案

与:

File.open( "some_file.txt" ) do |file|
puts file.read
end

open 方法使用 File 实例调用您的 block ,并在您的 block 返回后清理文件引用,根据需要关闭和刷新文件,因此您的应用程序不会泄漏文件处理程序,这是太棒了,因为我们通常会忘记关闭文件或不考虑文件处理可能会产生异常。

当你这样做时:

file = File.open("some_file.txt")
puts file.read

open 方法为您提供了 File 实例,但现在您负责清理困惑并在不再需要时关闭文件。因此,如果您这样做,您可能应该将文件设置为开始/救援 block ,并添加一个 ensure 子句以在出现任何问题时关闭文件。

除非您有非常特殊的需求,否则您永远不应该使用第二个版本,第一个版本更简单、更安全,而且您不必关心关闭/清理您对文件所做的任何事情。

关于ruby - 带 block 和不带 block 的 File.open() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058109/

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