Ruby I/O - 文件句柄左打开

Spe*_*cer 1 ruby

谁能提供一些线索,说明为什么这两段代码不相同?我唯一的想法是后一个代码部分中的.open不在一个块中,文件句柄保持打开状态.

File.open(file) do |io|
  io.each_line do |line|
    body_string << line
  end
end
Run Code Online (Sandbox Code Playgroud)

还有这个

File.open(file).each_line {|line| body_string << line}
Run Code Online (Sandbox Code Playgroud)

谢谢.

pht*_*ier 5

请参阅IO类的API.

如果给File.open一个块,它会打开文件,执行块,然后关闭文件.

如果没有给出块,它返回一个表示文件的对象(就像File :: new),因此它可能仍然被打开.