"尝试索引本地..."为什么我收到此错误?

Ell*_*lle 3 lua coronasdk

我是Lua的新手,并试图将事情分类.我试过这段代码:

function newCarousel(images) 
    local slideToImage = function() 
        print("ah!")
    end
end


local testSlide = newCarousel(myImages)
testSlide.slideToImage()
Run Code Online (Sandbox Code Playgroud)

这给了我这个错误:

尝试索引本地"testSlide"(零值)...

为什么是这样?

Mud*_*Mud 7

因为newCarousel没有返回,所以testSlide是nil,所以当你尝试索引它(testSlide.slideToImage完全相同testSlide["slideToImage"])时会出现错误.

我建议阅读Lua编程.您可以通过反复试验来解决语言的语法,语义和习语,但这会花费你更长的时间.


kik*_*ito 5

如果您希望能够执行此操作,则testSlide.slideToImage()必须进行修改newCarousel,以便它返回一个其中包含函数的表。最简单的实现如下:

function newCarousel(images)
    local t = {}
    t.slideToImage = function() 
        print("ah!")
    end
    return t
end
Run Code Online (Sandbox Code Playgroud)

您甚至可以构建 t 并在一个步骤中返回它;下面的代码与上面的代码等效:

function newCarousel(images)
    return {
        slideToImage = function() 
            print("ah!")
        end
    }
end
Run Code Online (Sandbox Code Playgroud)