Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

All of a sudden a variable is nil?

Asked by
digpoe 65 Badge of Merit
10 years ago

I'm absolutely stumped here;

local function sortlist(a, b)
    local colless = a.color == lplayer.TeamColor or a.color.Number < b.color.Number
    local rankless = a.rank == lplrank or a.rank < b.rank
    print("Sort", a.obj, b.obj) -- This is line 14 in the script
    print(colless, rankless)
    return colless and rankless
end

This is the output (with the full script name removed):

17:55:38.960 - script:14: attempt to index local 'b' (a nil value)
17:55:38.961 - Stack Begin
17:55:38.961 - Script 'script', Line 14
17:55:38.962 - Script 'script', Line 20 - global Reorder
17:55:38.963 - Script 'script', Line 49 - global OnPlayerAdded
17:55:38.963 - Script 'script', Line 82
17:55:38.964 - Stack End

My questions are: (A) Why is this not erroring at line 12, where I reference 'b' for the first time in the 'sortlist' function (B) Why is it even erroring at all? I'm running table.sort() with this as the sort function, and last I checked, table.sort guarantees that both args exist.

Answer this question