是否有一个只用一行代码来粘贴文件的技巧?
(“to slup”=将整个文件读入字符串。)
通常我会做以下事情:
local f = io.open("/path/to/file")
local s = f:read("*a")
f:close()
但我想知道是否有更短的路。
我知道我们可以(在Lua 5.2中)做以下事情:
local s = io.lines("/path/to/file", "*a")()
但是文件将保持打开状态一段时间,直到垃圾收集器启动(并取消关闭io.lines
返回;我相信这个闭包知道明确关闭文件,但这可能只发生在第二次调用它,当它知道已达到EOF时。)
那么,我缺少一个单线解决方案吗?
答案 0 :(得分:2)
标准库中没有这样的功能,但您可以自己定义:
local function slurp(path)
local f = io.open(path)
local s = f:read("*a")
f:close()
return s
end
或者在Penlight中有这样的功能。