繁体   English   中英

Lua:尝试为字段“?”建立索引 (零值)

[英]Lua: attempt to index field '?' (a nil value)

我只是从lua开始,我有一些故意犯错误的人提供的代码。 现在,我遇到了一个障碍,不断出现以下代码错误:

function SIM_Utils:ClickButton(app, buttonName)
        page = app:getTopPage()
        widgets = page:getWidgets(buttonName)
        print (type(widgets))
        print (widgets[1])
        widgets[1]:click(true, 5000)--this yields "attempt to index field '?' (a nil value)"
        widgets[1]:click(false,0)--this yields "attempt to index field '?' (a nil value)"
        app:captureScreen()
end

这将导致:

table
WidgetCommon (09590790)

LE

运行Alex在这里发布的结果之后:

widgets=

table: 0A45CF28

1

WidgetCommon (09590790)

表是否为0A ...我正在寻找的答案?

LE 2:重新发布了整个功能,因为看来这是问题所在

什么是page:getWidgets返回? 您可以使用print(type(widgets)) 如果它是一个表,则该表中未定义数组位置1(您可以使用pairs函数遍历表内容)。 如果不是表,那么您试图在不是表的东西上查找索引,这将无法正常工作。

另外,由于您不page:getWidgets Lua,因此请意识到page:getWidgets不是内置组件。 因此,您将需要加载此功能或使用提供此功能的相应派生应用程序。

尝试运行以下代码:

widgets = page:getWidgets(buttonName) 
print("widgets=", widgets) -- Should print out something like "Widgets= 0x12345678". If it doesn't then widgets is nil. In other words nothing is there. 
for k, v in pairs(widgets) do
    print(k, v)
end

这样可以确保您有一个widgets表,如果有的话,它将告诉您其中的内容。 如果索引1上没有任何内容,那就是您的问题: page:getWidgets(buttonName)没有返回您期望的小部件列表。

似乎不太可能,但是您正在使用的库有可能(实际上是您发布的信息中唯一的可能性)抛出错误,而不是代码。 请注意,当在Lua中引发错误时,抛出代码,并告诉Lua将错误显示为从您的调用代码而非库代码中引发的错误。 只能将其用于逻辑错误,例如“ Widget :: show的错误参数”,而不是所得到的东西,但这可能发生。 同样,C函数中的错误也会显示出来,就像它来自您的代码一样。 例如:

io.open("myFile").read() --> should be ":read", not ".read"
stdin:1: attempt to index a nil value
stack traceback:
    stdin:1: in main chunk
    [C]: ?

您是否有堆栈回溯显示以及错误?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM