保存io.read()文件读取结果到字符串

Save io.read() file reading result to a string

所以我有一些代码:

  io.input(file)

  print(io.read())
  
  result = io.read()
  print(result)

  io.close(file)

当我 运行 这个时,我得到

dasdasd
nil

其中“dasdasd”是文件的内容。这对我来说意味着 io.read() 的结果没有正确保存到字符串中。为什么会这样?我错过了什么?

Lua 不是 referentially transparent programming language, and io.read() is not a pure function。如果你想多次使用调用它的输出,你不能多次调用它。将它保存到一个变量并使用它(就像你在第一次调用它后立即所做的那样)。

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

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

f :seek('set')  --  set returns to the beginning
result  = f :read()
print( result )

f :close()