Это вопрос сценария lua для WoW (World of Warcraft). Не многих из них спрашивают здесь, но мне некуда обратиться, и Stackoverflow - это оазис программиста для ответов.
Вопрос:
Wowwiki утверждает, что 2-й, 3-й, 4-й аргументы являются вашими вызывающими функциями 1-й, 2-й, 3-й аргументы. Я не считаю это правдой. Я считаю, что 3-й, 4-й, 5-й аргументы в конечном итоге являются 1-м, 2-м, 3-м аргументами.
Ссылка: http://www.wowwiki.com/API_pcall
Функция:
function myTest(arg1)
return arg1 .. 10;
end
Проблема:
local retOK, ret1 = pcall(myTest,"string value");
когда я пробую пример, я получаю сообщение об ошибке "попытка выполнить конкатенацию на локальном arg1 (значение nil)". Если я изменю код на:
local retOK, ret1 = pcall(myTest,"string value", "bob");
тогда я получаю вывод "bob10". Куда идет второй аргумент и для чего он нужен?
Дополнительные испытания:
function BobsToolbox:RunTest()
local test1, value1 = pcall(BobsToolbox.Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function BobsToolbox:Test1(arg1)
return arg1 .. "10";
end
Результаты: попытка объединить локальный 'arg1' (нулевое значение)
function BobsToolbox:RunTest()
local test1, value1 = pcall(Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function Test1(arg1)
return arg1 .. "10";
end
Результаты: строковое значение 10
Я новичок в Луа и не могу понять, почему они разные.
Новый вопрос:
Следующий код работает, но почему?
function BobsToolbox:RunTest()
local test1, value1 = pcall(BobsToolbox.Test1, "string value");
SharpDeck:Print("Test1: " .. tostring(test1) .. " Value: " .. tostring(value1));
end
function BobsToolbox.Test1(arg1)
return arg1 .. "10";
end
В чем разница между следующим: ("." Vs ":")
- функция BobsToolbox.Test1 (arg1)
- функция BobsToolbox: Test1 (arg1)