在Lua返回课程

时间:2016-03-24 21:31:41

标签: lua

我试图创建一个插件,但我似乎无法从GetPlayer()函数外部访问返回的播放器类。

这是GetPlayer功能:

function GetPlayer(Player_To_Find) -- This is the function we use to verify the user exists, It will return the user class if the user exists
    LOG("Finding " .. Player_To_Find) --False if they do not exist
    local Found = false
    local FindPlayer = function(TargetPlayer)
        if (TargetPlayer:GetName() == Player_To_Find) then
            Found = true
            print("Found " .. TargetPlayer:GetName())
            return TargetPlayer

        end
    end
    cRoot:Get():FindAndDoWithPlayer(Player_To_Find, FindPlayer)
    if Found == true then return TargetPlayer  else return false end
end

如果我在使用此代码段返回后尝试调用TargetPlayer类:

TargetPlayer=GetPlayer(Target)
if TargetPlayer ~= false then
    LOG(TargetPlayer:GetName())

它将失败并显示错误:

attempt to index global 'TargetPlayer' (a nil value)

任何人都可以指出我正确的方向,我花了很长时间才拿到空白。

1 个答案:

答案 0 :(得分:2)

参数TargetPlayer仅在函数体的范围内。 TargetPlayer最后一行中的GetPlayer引用了一个全局变量,该变量可能不存在,因此nil

GetPlayer函数中声明一个局部变量,将其设置在FindPlayer函数的主体中,并在GetPlayer的末尾返回它(也不要返回false如果找不到播放器,请返回nil,语义上意为“无”。)