我收到此错误:尝试索引字段'array'(一个nil值),这是我的代码:
aUItems = {}
aUItems[1] = tonumber(result[1].item_1)
aUItems[2] = tonumber(result[1].item_2)
aUItems[3] = tonumber(result[1].item_3)
aUItems[4] = tonumber(result[1].item_4)
aUItems[5] = tonumber(result[1].item_5)
aUItems[6] = tonumber(result[1].item_6) -- Everything here is right, I checked it!
Network:Send(player, "UpdateAmount", aUItems ) -- Basicly calls the function
--function
function GK7Inv:UpdateAmount( array )
aItemsa[1] = array[1]
aItemsa[2] = array[2]
aItemsa[3] = array[3]
aItemsa[4] = array[4]
aItemsa[5] = array[5]
aItemsa[6] = array[6]
end
答案 0 :(得分:0)
关键是你如何调用这个函数,我们还没看到......
当将函数定义为方法时(使用:
而非.
),它有一个名为self
的隐式第一个参数。当你调用它时,你必须传递self
的值,这几乎总是由将其作为方法隐式地完成。如果不这样做,那么您的形式参数将不符合您的实际参数。 Lua允许函数调用传递任意数量的参数,而不考虑形式参数的数量。默认值为nil
。
所以,一定要调用这样的方法:
GK7Inv:UpdateAmount(aUItems)
-- formal parameter self has the same value as GK7Inv
-- formal parameter array has the same value as aUItems
而不是这样:
GK7Inv.UpdateAmount(aUItems)
-- formal parameter self has the same value as aUItems
-- formal parameter array has the default value nil
当然,您不必将函数定义为方法,在这种情况下,您可以使用.
function GK7Inv.UpdateAmount( array )
-- ...
end
或者,作为匿名函数,可能存储在变量而不是表
中(function ( array ) -- don't store the function value, just it as an expression called as a function
-- ...
end)(aUItems)
function UpdateAmount( array ) -- store the function value in a global variable
-- ...
end
UpdateAmount(aUItems)
local function UpdateAmount( array ) -- store the function value in a local variable
-- ...
end
UpdateAmount(aUItems)