Lua - util_server.lua:440 尝试索引本地“自我”(零值)

Posted

技术标签:

【中文标题】Lua - util_server.lua:440 尝试索引本地“自我”(零值)【英文标题】:Lua - util_server.lua:440 attempt to index local 'self' (a nil value) 【发布时间】:2014-10-08 15:38:55 【问题描述】:

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

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

函数字符串:拆分(分隔符) 如果分隔符 == '.'然后 分隔符 = '%.' 结尾 本地结果 = 对于部分 self:gmatch('(.-)' .. separator) 做 结果[#result+1] = 部分 结尾 结果[#result+1] = self:match('.*' .. 分隔符 .. '(.*)$') 或 self 返回结果 结尾

【问题讨论】:

第440行是哪一个? Error while trying to call a class method: attempt to index local 'self' (a nil value) - Lua的可能重复 【参考方案1】:

你可能说错了。

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

【讨论】:

一张便条。在电话中 s.split(sep) selfsep 所以它不是 nil(如果 sep 不是 nil)

以上是关于Lua - util_server.lua:440 尝试索引本地“自我”(零值)的主要内容,如果未能解决你的问题,请参考以下文章

lua解释器 是啥东西? lua 后面加lua文件名为啥不行?

怎样在lua脚本中调用另一个lua脚本中的函数呢???

lua 如何最快速度入门

lua文件怎么打开怎么使用

什么是Lua?

Lua 学习