假设有两种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在第二种情况下使用?我想知道为什么?
这是因为File.readmethod返回包含文件内容的字符串,而不是File对象.是的,close如果您使用File.read方法,则不需要显式使用,因为ruby会自动为您执行此操作.