0

我正在使用 FiveM 中的脚本,当服务器启动时,我在控制台中收到“尝试调用零值(本地'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)

所以我发现了一篇关于在“if(Users)then”中添加“and cb”的帖子,所以代码看起来像这样。

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)

但这并没有解决问题。

结果是让错误消失。

4

2 回答 2

0

所以我发现了一篇关于在“if(Users)then”中添加“and cb”的帖子,所以代码看起来像这样。

这是正确的。但是即使变量“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
)
于 2019-07-23T03:24:22.993 回答
0

如果 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)
于 2019-07-23T14:41:38.563 回答