LUA 错误:尝试索引零值 @6:16
Posted
技术标签:
【中文标题】LUA 错误:尝试索引零值 @6:16【英文标题】:LUA Error: attempt to index a nil value @6:16 【发布时间】:2016-04-01 11:03:29 【问题描述】:我正在尝试通过发送请求来检索 Entryhandle UUID。但是,我每次都会收到此错误。谁能帮我解决它或指出我在哪里犯了错误?
local config=
config.mcast_mac = "00:0a:cd:16:da:f1"
function rpc:epm()
local pkt = CreateFromPath("ethernet/ip/udp/dcerpc/epm")
--[[data is put here]]
SendAndWait(pkt, function(res)
local epm = res.get_layer("epm")
--[[data is put here--]]
handle = epm.EntryHandleUUID.to_string()
print("EntryHandleUUID:",handle)
end
end,2000)
return handle
end
【问题讨论】:
你的错误是你索引一个 nil 值。你的变量之一是零。因此,您无法使用点运算符访问其任何成员。你没有带有行号的堆栈跟踪吗? 【参考方案1】:此代码不是有效的 Lua 代码。假设从print
之后的行中删除end
。
要找出您尝试访问 nil 值的位置,您只需在每个索引操作之前添加 assert
。
local config=
config.mcast_mac = "00:0a:cd:16:da:f1"
assert(rpc, 'rpc is NULL')
function rpc:epm()
local pkt = CreateFromPath("ethernet/ip/udp/dcerpc/epm")
--[[data is put here]]
SendAndWait(pkt, function(res)
assert(res, 'res is NULL')
local epm = res.get_layer("epm")
--[[data is put here--]]
assert(epm, 'epm is NULL')
local uuid = epm.EntryHandleUUID
assert(uuid, 'epm.EntryHandleUUID is NULL')
handle = uuid.to_string()
print("EntryHandleUUID:",handle)
end, 2000)
return handle
end
【讨论】:
以上是关于LUA 错误:尝试索引零值 @6:16的主要内容,如果未能解决你的问题,请参考以下文章