将 io.read() 读取的文件保存到字符串中

所以我有一些代码:

  io.input(file)

  print(io.read())

  result = io.read()
  print(result)

  io.close(file)

当我运行这个代码时,我得到的结果是

dasdasd
nil

其中"dasdasd"是文件内容。这说明 io.read() 的结果没有被正确地保存到字符串中。这是什么原因?我错过了什么吗?

点赞
用户7509065
用户7509065

Lua不是一个引用透明的编程语言,io.read()也不是一个纯函数。如果你想多次使用从它调用的结果,就不能只调用多次。将其保存到变量中并使用该变量代替(就像在第一次调用后立即做的那样)。

2021-06-11 01:27:22
用户3342050
用户3342050

你假设 read() 每次都会回到开头。这需要执行 seek() 操作。https://pgl.yoyo.org/luai/i/file%3Aseek

f = io.input('filename.txt')
print(f:read())

f:seek('set') -- set 返回到开头
result = f:read()
print(result)

f:close()
2021-06-11 01:49:51