提问人:Ivan Lendl 提问时间:4/28/2022 最后编辑:ChrisIvan Lendl 更新时间:4/29/2022 访问量:207
Ruby - 将打开的文件对象作为参数传递给函数
ruby - passing open file object to function as parameter
问:
为什么在 Ruby 中读取和写入文件时不起作用?
def write_to_file(a_file)
a_file.puts("hello")
end
a_file = File.new("test.txt", "w")
write_to_file(a_file)
我找到的替代方法是将文件名传递给从中读取或写入的每个函数,并在该函数中打开和关闭它。
为什么我不能打开文件并将该 Open File 对象传递给函数?我分配的变量是否未创建文件对象?a_file
答:
2赞
max
4/28/2022
#1
File.new
确实创建了一个文件,但它在缓冲模式(或非同步模式)下打开,除非文件名是 tty。如果要打开文件并向其写入内容,惯用的方法是:
File.open("test.txt", "w") do |file|
file.write("hello")
end
这可确保在完成后关闭文件。该文件处理程序可以随心所欲地传递:
def write_to_file(file)
file.write("hello")
end
File.open("test.txt", "w") do |file|
write_to_file(file)
end
评论
a_file.close
write_to_file