1. ホーム
  2. lua

[解決済み] "ローカルへのインデックス作成試行..." なぜこのエラーが発生するのでしょうか?

2022-02-15 23:57:32

質問

私はLuaの初心者で、頭の中で整理しているところです。このコードを試してみました。

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


local testSlide = newCarousel(myImages)
testSlide.slideToImage()

というエラーが出ました。

ローカル "testSlide" (a nil value)のインデックスを作成しようとしました...。

これはなぜでしょうか?

どのように解決するのか?

をできるようにしたい場合 testSlide.slideToImage() を変更する必要があります。 newCarousel のように、関数を内包したテーブルを返すようにします。最もシンプルな実装は次のようなものです。

function newCarousel(images)
    local t = {}
    t.slideToImage = function() 
        print("ah!")
    end
    return t
end

tを構築し、それを1ステップで返すこともできます。次のコードは、上のコードと同等です。

function newCarousel(images)
    return {
        slideToImage = function() 
            print("ah!")
        end
    }
end