如何从文件中读取特定数字

我想编写一个 Lua 脚本,将我的变量保存并重新加载到程序中。我在互联网上搜索了一些代码示例,现在我有了这个:

--SetUp vars
accept = 1
strenght = 5
hp = 2

--create file
local f = assert(io.open("quicksave", "w"))
f:write(accept, "\n")
f:write(strenght, "\n")
f:write(hp, "\n")
f:close()

--Set vars to 0(simulate restart of program)
accept = 0
strenght = 0
hp = 0
print("accept: "..accept.."   Strenght: "..strenght.."   HP: "..hp)

--load in the saved vars
local f = assert(io.open("quicksave", "r"))
accept = f:read("*line")
strenght = f:read("*line")
hp = f:read("*line")
f:close()
print("accept: "..accept.."   Strenght: "..strenght.."   HP: "..hp)

这对我很好用,但是我如何从文件中只读取特定的值?例如:如果我只想读出文件的第二行(表示强度的变量),我该怎么办?

点赞
用户107090
用户107090

你可以直接阅读并且丢弃第一行:

--加载第二个已保存的变量
local f = assert(io.open("quicksave", "r"))
f:read("*line")
strenght = f:read("*line")

尽管如此,我建议你把数据保存为一个可以用 dofile 加载的 Lua 脚本,类似于下面这样:

return {
  accept = 1,
  strenght = 5,
  hp = 2
}

然后你可以加载进一个本地变量并读取你需要的字段:

local state = dofile("state.lua")
strenght = state.strenght
2015-12-02 16:23:03