Nil Val fixed rhx

我正在为 FiveM 编写一个脚本,在服务器启动时,我在控制台中得到“attempt to call a nil value (local 'cb')”作为错误。下面的代码谈到空值是 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)

但是这并没有解决问题。

结果是让错误消失。

点赞
用户10977528
用户10977528

所以我找到了一篇帖子,讲如何将 "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-23 03:24:22
用户3379140
用户3379140

如果 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-23 14:41:38