传递数组到函数时出错(Lua)

我遇到了这个错误:尝试索引字段“array”(一个空值),这是我的代码:

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)-这里一切正常,我检查了它!
Network:Send(player,“UpdateAmount”,aUItems) - 基本上调用函数

- 功能
function GK7InvUpdateAmountarrayaItemsa [1] = array [1]
aItemsa [2] = array [2]
aItemsa [3] = array [3]
aItemsa [4] = array [4]
aItemsa [5] = array [5]
aItemsa [6] = array [6]
end
点赞
用户2226988
用户2226988

关键在于您如何调用函数,我们目前还没有看到...

当您将函数定义为一个方法(使用:而不是.时),它会有一个隐含的名为self的第一个参数。当您调用它时,您必须传递self的值,这几乎总是通过_作为方法调用_隐式完成的。否则,您的形式参数将不会与实际参数对齐。Lua允许函数调用传递任意数量的参数,而不考虑形式参数的数量。默认值为nil

因此,请确保像这样调用方法:

GK7Inv:UpdateAmount(aUItems)
-- 形式参数self具有与GK7Inv相同的值
-- 形式参数array具有与aUItems相同的值

而不是这样:

GK7Inv.UpdateAmount(aUItems)
-- 形式参数self具有与aUItems相同的值
-- 形式参数array具有默认值nil

当然,您不必将函数定义为一个方法,在这种情况下,您将使用.定义和调用它

function GK7Inv.UpdateAmount( array )
-- ...
end

或者,作为匿名函数,可能存储在变量而不是表中

(function ( array ) -- 不要存储函数值,只将其作为函数调用的表达式使用
-- ...
end)(aUItems)

function UpdateAmount( array ) -- 将函数值存储在全局变量中
-- ...
end
UpdateAmount(aUItems)

local function UpdateAmount( array ) -- 将函数值存储在本地变量中
-- ...
end
UpdateAmount(aUItems)
2013-12-21 00:13:36