Nil Val 固定 rhx

Nil Val fixed rhx

我正在 FiveM 中编写脚本,当服务器启动时,我在控制台中收到 "attempt to call a nil value (local 'cb')" 作为错误。请参阅下面的代码,其中讨论的 nil 值是 cb(nil)。

AddEventHandler("f:getPlayer", function(user, cb)
    if(Users)then
        if(Users[user])then
            cb(Users[user])
        else
            cb(nil)
        end
    else
        cb(nil)
    end
end)

所以我找到了一个 post 谈论将 "and cb" 添加到 "if(Users)then" 所以代码看起来像这样。

AddEventHandler("f:getPlayer", function(user, cb)
    if(Users and cb)then
        if(Users[user])then
            cb(Users[user])
        else
            cb(nil)
        end
    else
        cb(nil)
    end
end)

但这并没有解决问题。

结果是错误消失了。

So I found a post talking about adding "and cb" to the "if(Users)then" so the code looks like this.

没错。但是即使变量 "cb" 不包含它,您也会在代码中调用函数对象。

你的代码应该是这样的:

AddEventHandler("f:getPlayer", function(user, cb)
    if cb then 
        if Users then
            cb(Users[user]) 
        else
            cb(nil)
        end
    end
end)

同上:

 AddEventHandler(
    "f:getPlayer", 
    function(user, cb)
        if cb then
            cb(Users and Users[user] or nil)
        end
    end
)

如果 cb 为 nil,那么无论是否检查 cb 是否被赋值,您仍然试图像函数一样使用它。应该是:

AddEventHandler("f:getPlayer", function(user, cb)
    if not cb then return end
    if(Users)then
        if(Users[user])then
            cb(Users[user])
        else
            cb(nil)
        end
    else
        cb(nil)
    end
end)