Error when calling file:lines() in for loop
我有以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function getusers(file) print (type(file)) for line in file:lines() do user, value = string.match(file,"(UserName=)(.-)\ ") print(value) end f:close() end f = assert(io.open('file2.ini',"r")) t = f:read("*all") getusers(t) |
回归:
1 | print(type(file)) |
是字符串类型。 Lua 将错误代码返回给我:
lua: reader.lua:3: attempt to call method 'lines' (a nil value)
我不知道如何解决这个问题。如果我只使用 for 和 end 之间的线(for 循环中的线),效果很好。
1 2 3 4 5 6 7 8 9 10 11 12 | function getusers(file) print(type(file)) for line in file:lines() do user, value = string.match(line,"(UserName=)(.*)") print(value) end f:close() end f = assert(io.open('t.txt',"r")) getusers(f) |
我还将模式修改为
我不知道这是否是最聪明的方法,但现在我使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 | function getusers(file) for line in file:lines() do user, value = string.match(line,"(UserName=)(.*)") if value ~= nil then print(value) end end f:close() end f = assert(io.open('file2.ini',"r")) getusers(f) |
如您所见,我在打印之前检查了 'value' 的值。