错误:尝试索引本地“自我”(零值)
Posted
技术标签:
【中文标题】错误:尝试索引本地“自我”(零值)【英文标题】:Error: attempt to index local 'self' (a nil value) 【发布时间】:2014-08-10 02:30:05 【问题描述】:我正在学习有关 Lua 的教程,专门用于在游戏 Garry's Mod 中制作游戏模式。我已经看了一段时间了,我根本找不到问题所在。
function ply:databaseFolders()
return "server/example/players/" .. self:ShortSteamID() .. "/" --ref. A
end
function ply:databasePath()
return self:databaseFolders() .. "database.txt" --ERROR line here, goes up
end
function ply:databaseExists()
local f = file.Exists(self.databasePath(), "DATA") --goes up here
return f
end
function ply:databaseCheck()
self.database =
local f = self:databaseExists() --goes up here
...
end
function GM:PlayerAuthed(ply, steamID, uniqueID)
ply:databaseCheck() --goes up here
print("Player: " .. ply:Nick() .. " has gotten authed.")
end
代码总结:我想在上面的目录下创建一个database.txt文件。
Edit1:当所有玩家离开游戏时,参考。已到达 A,但没有在目录中创建文件。
【问题讨论】:
Attempt to index local 'self' (a nil value) 的可能重复项 【参考方案1】:当您调用函数databasePath
时,您没有使用OOP 语法;因此self
不会隐式传递给函数。从此,错误。更改以下内容:
function ply:databaseExists()
local f = file.Exists(self:databasePath(), "DATA")
-- notice the use of ---> : <--- here
return f
end
【讨论】:
非常感谢!!是的,这行得通。 ':' 与 '.'对我来说很奇怪,因为这是我第一次遇到它。 @cid::
方法的语法调用了一个特定于 Lua 的怪癖。不过有good reasons也是这样的。
在python中其实很相似以上是关于错误:尝试索引本地“自我”(零值)的主要内容,如果未能解决你的问题,请参考以下文章