2015-12-02 62 views
0

我想寫一個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) 

這工作對我很好,但我怎樣才能從文件中讀取只有特定的值?例如:如果我只想讀出文件的第二行(強度變量),該怎麼辦?

回答

1

您可以簡單地讀取並丟棄的第一行:

--load in the second saved var 
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 
+0

這將需要一個單獨的庫來代表一個Lua表作爲一段Lua代碼。通過相同的努力,最好使用一些跨語言格式,比如json http://lua-users.org/wiki/JsonModules – marsgpl