我应该在Ruby中的File.read和File.open之后销毁File对象吗?

dj1*_*008 3 ruby file

假设有两种ruby File操作.

首先,

file = File.open("xxx")
file.close
Run Code Online (Sandbox Code Playgroud)

其次,

file = File.read("xxx")
file.close
Run Code Online (Sandbox Code Playgroud)

众所周知,我们应该在完成使用后关闭文件.但是,在第二个代码块中,Ruby解释器抛出如下所示的错误消息:

in `<main>': undefined method `close' for #<String:0x000000022a3a08> (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

我不需要file.close在第二种情况下使用?我想知道为什么?

Mar*_*pka 5

这是因为File.readmethod返回包含文件内容的字符串,而不是File对象.是的,close如果您使用File.read方法,则不需要显式使用,因为ruby会自动为您执行此操作.