Передача переменных в функцию в Lua - PullRequest
0 голосов
/ 18 мая 2011

Я новичок в Lua, поэтому (естественно) я застрял на первой вещи, которую я пытался запрограммировать.Я работаю с примером скрипта, поставляемого с пакетом Corona Developer.Вот упрощенная версия функции (ненужный материал удален), которую я пытаюсь вызвать:

function new( imageSet, slideBackground, top, bottom )

    function g:jumpToImage(num)

            print(num)
            local i = 0
            print("jumpToImage")
            print("#images", #images)
            for i = 1, #images do
                if i < num then
                    images[i].x = -screenW*.5;
                elseif i > num then
                    images[i].x = screenW*1.5 + pad
                else
                    images[i].x = screenW*.5 - pad
                end
            end
            imgNum = num
            initImage(imgNum)
        end

end

Если я пытаюсь вызвать эту функцию следующим образом:

local test = slideView.new( myImages )
test.jumpToImage(2)

Я получаю этоошибка:

попытка сравнить число с nil

в строке 225. Казалось бы, "num" не передается в функцию.Почему это?

1 Ответ

5 голосов
/ 18 мая 2011

Где вы декларируете g? Вы добавляете метод к g, который не существует (как локальный). Тогда ты тоже никогда не вернешь. Но, скорее всего, это были просто ошибки копирования или что-то в этом роде. Настоящей ошибкой, вероятно, является запись, которую вы используете для вызова test: jumpToImage.

Вы заявляете g:jumpToImage(num). Это двоеточие означает, что первый аргумент должен рассматриваться как self. Так что на самом деле ваша функция g.jumpToImage(self, num)

Позже вы называете это test.jumpToImage(2). Это делает фактические аргументы self равными 2 и num равными нулю. Что вы хотите сделать, это test:jumpToImage(2). Двоеточие там расширяет выражение до test.jumpToImage(test, 2)

Взгляните на эту страницу для объяснения синтаксиса Lua :.

...