Lua - util_server.lua:440尝试索引本地' self' (零值)

时间:2014-08-14 20:47:02

标签: lua null self

晚上好 你能帮我解决这个问题吗?

错误:race / util_server.lua:440:尝试索引本地' self' (零值)

 
function string:split(separator)
    if separator == '.' then
        separator = '%.'
    end
    local result = {}
    for part in self:gmatch('(.-)' .. separator) do
        result[#result+1] = part
    end
    result[#result+1] = self:match('.*' .. separator .. '(.*)$') or self
    return result
end

1 个答案:

答案 0 :(得分:0)

你可能认错了。

function string:split(separator)

简写:

function string.split(self, separator)

给定一个字符串和分隔符:

 s = 'This is a test'
 separator = ' '

你需要这样称呼它:

 string.split(s, separator)

或者:

 s:split(separator)

如果你这样称呼它:

 s.split(separator)

您未能为self参数提供值。


旁注,您可以更简单地编写split

function string:split(separators)
    local result = {}
    for part in self:gmatch('[^'..separators..']+') do
        result[#result + 1] = part
    end
    return result
end

这样做的缺点是您不能使用多字符字符串作为分隔符,但优点可以指定多个分隔符。例如,您可以从句子中删除所有标点符号,并只抓取单词:

s = 'This is an example: homemade, freshly-baked pies are delicious!'
for _,word in pairs(s:split(' :.,!-')) do
    print(word)
end

输出:

This
is
an
example
homemade
freshly
baked
pies
are
delicious