【发布时间】:2014-09-12 11:24:49
【问题描述】:
有没有什么技巧可以只用一行代码来破解文件?
("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时)。
那么,有没有我缺少的单行解决方案?
【问题讨论】:
-
为什么需要单线?
-
@lhf:我需要一个单行代码,因为代码要出现在一篇文章中。由于我需要在此任务上“浪费”5 行额外的行(周围还有 2 个空行),或者 catwell 解决方案的 9 行,这意味着我必须将我的代码分成两个函数,我的代码将不再简洁:-(