Snusmumriken
Внутри? Где внутри?
Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрошу (если функция ничего не вернула, когда должна была, то положит NILы).
И вопрос такой: нужно ли мое стек от этих NILов чистить? Или я могу просто проверить, что если на стеке не то, что мне нужно (lua_isnumber, например), то просто забить?
> Внутри? Где внутри?
Внутри стека.
> Грубо говоря, lua_call положит на стек столько возвращаемых значений, сколько я попрош
у (если функция ничего не вернула, когда должна была, то положит NILы).
Вроде того.
> И вопрос такой: нужно ли мое стек от этих NILов чистить?
Нет, за редким исключением.
> Что означает очищает функцию?
Что делает lua_call? (подсказка: запускает функцию). Где лежит ссылка на функцию? (подсказка: в стеке). Откуда lua_call вычищает функцию? (подсказка: из стека).
Во время сишного программирования, тебе крайне желательна какая-нибудь функция, которая умеет печатать содержимое стека.
Snusmumriken
Например вот такая:
void luax_printstack (lua_State *L) {
int top=lua_gettop(L);
for (int i=1; i <= top; i++) {
printf("%d\t%s\t", i, luaL_typename(L,i));
switch (lua_type(L, i)) {
case LUA_TNUMBER:
printf("%g\n",lua_tonumber(L,i));
break;
case LUA_TSTRING:
printf("%s\n",lua_tostring(L,i));
break;
case LUA_TBOOLEAN:
printf("%s\n", (lua_toboolean(L, i) ? "true" : "false"));
break;
case LUA_TNIL:
printf("%s\n", "nil");
break;
default:
printf("%p\n",lua_topointer(L,i));
break;
}
}
}
И ты такой берёшь, и выводишь стек в разные моменты жизнедеятельности.
Eduard
Понял, спасибо!
Eduard
Snusmumriken
Правильно, если ты их ожидаешь — они остаются, и их надо чистить.
lua_pop(L, n);
Eduard
Не может ли произойти переполнение стека?
Snusmumriken
Может ))
Eduard
Т.е., тогда правильно - делать lua_pop столько раз, сколько возвращаемых значений указано в lua_pcall ?
Eduard
Eduard
так и думал, спасибо
Snusmumriken
Если ты делаешь биндинг для луёвой либы, выдавая луа кучу сишных функций чтобы луа их дёргала — там все очистки стеков происходят автоматом.
Snusmumriken
Луа вызвала функцию, что-то ей передала, что-то вернула — стек "очистился" (точнее, функция закончила своё исполнение, следующие будут со свежим стеком).
Eduard
ага, ну а в случае, когда наоборот - я зову lua из Си, тогда надо чистить
Snusmumriken
Ну, луа же не знает когда ты закончил работать с её стеком с сишной стороны ))
Snusmumriken
Вдруг ты полученные результаты планируешь передавать в следующую функцию, например.
Snusmumriken
Карочи, если что-то непонятно — выводи содержимое стека. Очень полезное занятие.
Точно так же, если в луа тебе что-то непонятно — выводи содержимое таблиц, входные и выходные данные функций и промежуточную фигню.
Eduard
Карочи, если что-то непонятно — выводи содержимое стека. Очень полезное занятие.
Точно так же, если в луа тебе что-то непонятно — выводи содержимое таблиц, входные и выходные данные функций и промежуточную фигню.
да, я так и сделал, с помощью вашей функции. И это прояснило ситуацию - количество NILов всё время росло, т.к. я делал lua_pop только тогда, когда lua_isnumber(L, -1) == true, а Lua скрипт не всегда что-то возвращал, и в итоге на стеке копились NILы
Stas
@Snusmumriken , может бота поставим, а?
LISP
@Snusmumriken
LISP
Они просто на рандом кнопки жмут. Надо капчу поставить и всё
Hello, World! 🎄
Hello, World! 🎄
Mikhail
Хм. Боты с OCR?
Mikhail
LISP
Mikhail
Тут классный сайт попался по изучению глубоко луа и др яз.
Mikhail
Хотел порекомендовать, но там проверяют твои задания люди. Менторы. И... Я застрял. Жду ментора недели.ю.
LISP
Чего?
Mikhail
Там супер автоматизированных получение и отправка тестов... Но дальше человеческий фактор
LISP
Hello, World! 🎄
Hello, World! 🎄
просто гуглить и выдавать ссылки
Mikhail
Можно
Если не знает ответ, то пинает Снусма
Hello, World! 🎄
Mikhail
Увы.
Leon174
Mikhail
Напишу из дома.
Leon174
Ок
Mikhail
Отпинывалку в нужном направлении 😅
Snusmumriken
Автоматические пиналки живых людей это жестоко. А сотрудники техподдержки знают на что идут, и их пинают только с десяти до восьми.
Hello, World! 🎄
Snusmumriken
+
Ну давай, попробуй, пиналка окажется в бане быстрее чем отправит второе сообщение ))
Hello, World! 🎄
fgntfg
Snusmumriken
fgntfg
fgntfg
Пробовал
fgntfg
Денег мало становится
Mikhail
Вот, я обещал сайт с заданиями и проверками
для изучения в тч LUA
https://exercism.io
Leon174
Mikhail
не... новое у них - это режим research но там нет Lua пока что
Leon174
Кому интересно и кто не в курсе, кроме exercism для lua еще есть codewars и codility. Это бы в луашный закреп надо вынести, но его опять нет.
Arslan
Неужели бот сработал
Arslan
А. Это ты снус
Mikhail
Snusmumriken
Ага
Rustam
Привет я новичок помогите кто знает как в ankulua прокрутить страницу скиньте код
Rustam
Ау
Rustam
Набросте кусок кода с примером если возможно
Arslan
А если серьезно - тут не принято выражаться матом
Egor
сну спит
fgntfg
Ау
swipe(Location(100, 200), Location(600, 200))
fgntfg
Ребята, если вы не можете помочь, то, хотя-бы не ругайтесь зря.
Rustam
Похоже что здесь никто не сможет мне помощь а жаль
Lucky
Lucky
Rustam
Если бы я хотел купить скрипт я бы не писал в чате и не просил бы помощи
Rustam
Просто есть игра надо ее автоматизировать
Rustam
Нужено в цикле автоматизировать нажатие на img1 задержка 2 сек нажатие img 2 потом прокрутка страницы если нет img1 прокрутка продолжается
Rustam
Сейчас скину набросок
Olegator
https://pastebin.com/
Код лучше кидать через подобные сайты. Читать его текстом в сообщение не очень удобно.
Rustam
Скинул скриншот