string.match 报错:尝试对字段“?”(一个字符串值)进行索引。

我试图在文本文件的一行中匹配三个数据片段,并将它们存储在表元素中。每行大致如下:

0.277719    0.474610    This
0.474610    0.721241    is
0.721241    1.063209    test

我有一个本地表来保存文本行,我正在尝试按如下方式分配数据:

local data = {}
local file = io.open( "audio/audio.txt", "r" )
local i = 1
for line in file:lines() do
    data[i] = line
    data[i].start, data[i].out, data[i].name = string.match( line, '(%S+)%s*(%S+)%s*(%S+)' )
    i = i + 1
end

data[i] = line 部分正常工作,但下一行无法正常运行,只会得到以下错误:“attempt to index field '?' (a string value)”。

我做错了什么?

点赞
用户1909014
用户1909014

错误在于这一行:

data[i] = line

这一行使得 data[i] 成为一个字符串变量,而字符串变量无法对其它字符串进行索引。将该行更改为:

data[i] = {}

然后一切就正常了。

2014-05-12 10:29:30