<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Вопрос по стеку Lua]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Вопрос по стеку Lua форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sun, 03 May 2026 01:33:20 +0300</pubDate>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74906/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Полагаю, что программирование на луа и строение VMLua - это две большие разницы,<br />подобно как руление на &nbsp;авто и строение двигателя авто. &nbsp; <br />
			<i>14.03.2024 06:18:56, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74906/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74906/topic8555/</guid>
			<pubDate>Thu, 14 Mar 2024 06:18:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74905/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_oQNqSb20" href="/user/2480/" bx-tooltip-user-id="2480">Виталий</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />QLUA - это библиотека функций, написанная на СИ<br />---------------------------<br />VMLua - это виртуальная вычислительная машина , <br />тоже написанная на CИ ,<br /> интерпретирующая байт-код скрипта Lua. &nbsp;<br />=============<br /> Но ведь ветка называется &quot;Программирование на языке Lua&quot;.<br />=============<br />Но вопросы не &nbsp;о программировании на луа, <br />а о внутреннем строении функций &nbsp;на СИ. &nbsp; <br />
			<i>14.03.2024 05:56:22, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74905/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74905/topic8555/</guid>
			<pubDate>Thu, 14 Mar 2024 05:56:22 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74904/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_fIoij6Mh" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />QLUA - это библиотека функций, написанная на СИ<br />---------------------------<br />VMLua - это виртуальная вычислительная машина , <br />тоже написанная на CИ ,<br /> интерпретирующая байт-код скрипта Lua. &nbsp;<br />=============<br />Но ведь ветка называется &quot;Программирование на языке Lua&quot;. <br />
			<i>13.03.2024 22:16:38, Виталий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74904/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74904/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 22:16:38 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74903/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			QLUA - это библиотека функций, написанная на СИ<br />---------------------------<br />VMLua - это виртуальная вычислительная машина , <br />тоже написанная на CИ ,<br /> интерпретирующая байт-код скрипта Lua. &nbsp; <br />
			<i>13.03.2024 20:37:08, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74903/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74903/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 20:37:08 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74902/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			вообще-то,<br /> это форум по QUIK, а не про луа.<br />------------- &nbsp;<br />Тут постоянно путают qLua с VMLua. &nbsp; <br />
			<i>13.03.2024 20:33:53, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74902/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74902/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 20:33:53 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74901/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1eEtSgAF" href="/user/2480/" bx-tooltip-user-id="2480">Виталий</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />1. Вы ошибаетесь. NULL и nil это не одно и то же. Это одно и тоже в objective-c, но не в луа. В Lua &nbsp;нет NULL.<br />=============<br /> Допустим, но глобально в текущей ситуации это разве что-то меняет? Это пусто, 0, ничего, false.<br /><br /> <br />====quote====<br /><noindex><a href="/user/15910/" target="_blank" rel="nofollow">Serge123</a></noindex> написал:<br />Но если сравнить различные языки, то , &nbsp;если в данных присутствуют значения NULL, логические операторы и операторы сравнения могут возвращать, кроме TRUE или FALSE, также и третий результат — UNKNOWN.<br />=============<br /> Только JS встречал, с которым сейчас в основном и работаю. Больше нигде.<br /><br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />2. &nbsp;Этот способ адресации &nbsp;делает VMLua не только стековой машиной, но и регистровой машиной.Отрицательный индекс удобен, когда &nbsp;работаем с вершиной, положительные, когда работаем с фактическими параметрами функций.<br />=============<br /> Ну вот примерно про это я и спрашивал. Получается, что это просто работа со стеком таким образом, чтобы не превращать его в массив. Стек - это первый зашел и последний вышел. А если читать стек по положительным индексам - это массив получится. Получается, что это просто выбор разраба, как читать - ок. Меня это и интересовала: это правило или просто так сложилось.<br /><br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />4. &nbsp; Зря Вы не читаете учебники и документацию, а придумываете объяснение сами. Проблема Вашего непонимания в том, что Вы не знаете архитектуры процессоров.Пытаетесь разобраться в &quot;железе&quot; на основе знания какого-либо языка программирования. -------------------- &nbsp;Очевидно, что Ваши ощущения - это и есть результат незнания.<br />=============<br /> Ну так я сюда и пришел за знаниями. Разве форумы не для того чтобы быстро получить ответ на вопрос и продвинуться дальше? Читать документацию и прочее можно до бесконечности. У меня знакомый 4 года назад начал изучение ReactJS с чтения документации, тогда как я советовал ему освоить базу и начать работать. До сих пор учит. Зачем же в такие крайности?<br /><br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br />Подробнее написано в ссылках, выше и в других статьях в интернете.<br />=============<br /> Спасибо.<br />=============<br />Массив &nbsp;регистров. &nbsp;- это и есть регистровый способ адресации.<br />Т е VMLua это не только стековая, но и регистровая машина. &nbsp; &nbsp;Два в одном. &nbsp; <br />
			<i>13.03.2024 20:30:45, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74901/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74901/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 20:30:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74899/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_1AH3iDvT" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />1. Вы ошибаетесь. NULL и nil это не одно и то же. Это одно и тоже в objective-c, но не в луа. В Lua &nbsp;нет NULL.<br />=============<br />Допустим, но глобально в текущей ситуации это разве что-то меняет? Это пусто, 0, ничего, false.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_3KR9G9Mu" href="/user/15910/" bx-tooltip-user-id="15910">Serge123</a> написал:<br />Но если сравнить различные языки, то , &nbsp;если в данных присутствуют значения NULL, логические операторы и операторы сравнения могут возвращать, кроме TRUE или FALSE, также и третий результат — UNKNOWN.<br />=============<br />Только JS встречал, с которым сейчас в основном и работаю. Больше нигде.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_vubqcQoi" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />2. &nbsp;Этот способ адресации &nbsp;делает VMLua не только стековой машиной, но и регистровой машиной.Отрицательный индекс удобен, когда &nbsp;работаем с вершиной, положительные, когда работаем с фактическими параметрами функций.<br />=============<br />Ну вот примерно про это я и спрашивал. Получается, что это просто работа со стеком таким образом, чтобы не превращать его в массив. Стек - это первый зашел и последний вышел. А если читать стек по положительным индексам - это массив получится. Получается, что это просто выбор разраба, как читать - ок. Меня это и интересовала: это правило или просто так сложилось.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_BGgJX7xv" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />4. &nbsp; Зря Вы не читаете учебники и документацию, а придумываете объяснение сами. Проблема Вашего непонимания в том, что Вы не знаете архитектуры процессоров.Пытаетесь разобраться в &quot;железе&quot; на основе знания какого-либо языка программирования. -------------------- &nbsp;Очевидно, что Ваши ощущения - это и есть результат незнания.<br />=============<br />Ну так я сюда и пришел за знаниями. Разве форумы не для того чтобы быстро получить ответ на вопрос и продвинуться дальше? Читать документацию и прочее можно до бесконечности. У меня знакомый 4 года назад начал изучение ReactJS с чтения документации, тогда как я советовал ему освоить базу и начать работать. До сих пор учит. Зачем же в такие крайности?<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_X1cswUC5" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />Подробнее написано в ссылках, выше и в других статьях в интернете.<br />=============<br />Спасибо. <br />
			<i>13.03.2024 19:33:54, Виталий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74899/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74899/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 19:33:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74893/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_298c6iC6" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br />nil &nbsp;в Lua &nbsp;- это всегда false.<br />=============<br />Добавлю отсебятину: в Lua для логического типа и типа nil не используется память под данные: просто байт для хранения типа переменной указывает, что тип этой переменной nil. Для логического типа байт типа указывает, что это лог. тип, а дополнительный бит в этом байте равен 0/1 в случае false/true. <br />
			<i>13.03.2024 17:10:04, Serge123.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74893/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74893/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 17:10:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74877/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_m7Ju2Xin" href="/user/2480/" bx-tooltip-user-id="2480">Виталий</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/62/" target="_blank" rel="nofollow">nikolz</a></noindex> написал:<br /> &nbsp;<br />====quote====<br /> <noindex><a href="/user/2480/" target="_blank" rel="nofollow">Виталий</a></noindex> &nbsp;написал:<br />1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает &quot;положить сверху NULL&quot;. Для чего мы это делаем?<br />2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!<br />3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.<br />4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.<br /><br />Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит.<br />=============<br /> &nbsp;1. Не NULL а nil. &nbsp;Чтобы выбрать &nbsp;первый элемент таблицы.<br />------------------------<br />2. &nbsp;-1,1 - выбор с разных концов стека. &nbsp;<br />---------------------------<br />3. см документацию: &nbsp;int lua_next (lua_State *L, int index); &nbsp;Снимает ключ со стека, ложит пару ключ-значение из таблицы<br />Т е ключ функция сама убирает из стека, а значение убираем сами.<br />------------------------------<br />4. qLua - это библиотека функций. У нее нет стека. <br />Стек есть у виртуальной машины луа. qLua никаким боком не имеет отношение к этому.<br />-------------------<br />Не надо ничего предполагать или гадать, лучше прочитать:<br /> &nbsp;<noindex><a href="https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html" target="_blank" rel="nofollow">https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html</a></noindex> &nbsp;<br /> &nbsp;<noindex><a href="https://jevico.github.io/" target="_blank" rel="nofollow">https://jevico.github.io/</a></noindex> &nbsp;<br /> &nbsp;<noindex><a href="https://eligovision.ru/media/upload/lua.pdf" target="_blank" rel="nofollow">https://eligovision.ru/media/upload/lua.pdf</a></noindex> &nbsp;<br />=============<br /> Спасибо.<br /><br />1. Не принципиально, суть поняли. Я на разных языках пишу, где-то NULL (что даже привычней мне), но это одно и то же.<br />2. Вот зачем и почему? Т.е. я не понимаю почему в одном случае мы читаем через 1, а в других через -1. От чего зависит? Ну т.е. есть какое-то правило по которым таблицы сверху всегда или что, почему таблицы обчитываются через отрицательные индексы сверху стека?<br />3. Это типа lua_next &nbsp;снимает ключ, а мы через pop убираем остальное после чтения? Жесть какая-то, ну ладно.<br />4. Хорошо, допустим, но вот интересно как раз как это работает в Lua. Потому что у меня сложилось ощущение какого-то изврата. Хочу понять подробнее как оно работает<br />=============<br />Небольшой ликбез.<br />-------------------------<br />1. Вы ошибаетесь. NULL и nil это не одно и то же. Это одно и тоже в objective-c, но не в луа. <B>В Lua </B><B> нет NULL. </B><br />---------------------<br />Но если сравнить различные языки, то , &nbsp;если в данных присутствуют значения NULL, <br />логические операторы и операторы сравнения могут возвращать, кроме TRUE или FALSE, также и третий результат — UNKNOWN. <br />---------------<br />nil &nbsp;в Lua &nbsp;- это всегда false.<br />-----------------<br />2. &nbsp;Этот способ адресации &nbsp;делает VMLua не только стековой машиной, но и регистровой машиной.<br />Отрицательный индекс удобен, когда &nbsp;работаем с вершиной, положительные, когда работаем с фактическими параметрами функций.<br />--------------------------------<br />4. &nbsp; Зря Вы не читаете учебники и документацию, а придумываете объяснение сами. <br />Проблема Вашего непонимания в том, что Вы не знаете архитектуры процессоров.<br />Пытаетесь разобраться в &quot;железе&quot; на основе знания какого-либо языка программирования. <br />-------------------- &nbsp;<br />Очевидно, что Ваши ощущения - это и есть результат незнания.<br />------------------<br />Подробнее написано в ссылках, выше и в других статьях в интернете.<br /> &nbsp; <br />
			<i>13.03.2024 06:36:05, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74877/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74877/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 06:36:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74876/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_GILe92jd" href="/user/16015/" bx-tooltip-user-id="16015">funduk</a> написал:<br /><noindex><a href="/user/2480/" target="_blank" rel="nofollow">Виталий</a></noindex>, &quot;2. Вот зачем и почему? Т.е. я не понимаю почему в одном случае мы читаем &nbsp;через 1, а в других через -1. От чего зависит? Ну т.е. есть какое-то &nbsp;правило по которым таблицы сверху всегда или что, почему таблицы &nbsp;обчитываются через отрицательные индексы сверху стека?&quot;<br />Вы такой вопрос задаёте и тогда, когда в питоне видите отрицательные индексы в списках? Это известная идиома в интепретируемых языках и стек-машинах (виртуальных машинах), чисто для удобства программиста, чтобы ему не высчитывать номер индекса с начала контейнера (списка, строки, стека), если он знает номер с конца. В луа от этого проигрыш в скорости небольшой, но есть.<br />=============<br />На пайтоне я не пишу, никак до него не дойду и то в рамках нейросеток интересен, не более. Но суть вопроса не в том, почему индекс отрицательный, а почему во всех примерах с таблицами я вижу использование отрицательных индексов, а в примерах с передачей строки/числа - положительный. Это чисто совпадение или таблицы всегда кладут сверху стека? Т.е. можно ли это считать постоянным событием или нужно всегда проверять не таблица ли передо мной (видел вроде метод такой)? <br />
			<i>13.03.2024 04:20:05, Виталий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74876/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74876/topic8555/</guid>
			<pubDate>Wed, 13 Mar 2024 04:20:05 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74875/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<a class="blog-p-user-name" id="bp_gXnUPdm0" href="/user/2480/" bx-tooltip-user-id="2480">Виталий</a>, &quot;2. Вот зачем и почему? Т.е. я не понимаю почему в одном случае мы читаем &nbsp;через 1, а в других через -1. От чего зависит? Ну т.е. есть какое-то &nbsp;правило по которым таблицы сверху всегда или что, почему таблицы &nbsp;обчитываются через отрицательные индексы сверху стека?&quot;<br />Вы такой вопрос задаёте и тогда, когда в питоне видите отрицательные индексы в списках? Это известная идиома в интепретируемых языках и стек-машинах (виртуальных машинах), чисто для удобства программиста, чтобы ему не высчитывать номер индекса с начала контейнера (списка, строки, стека), если он знает номер с конца. В луа от этого проигрыш в скорости небольшой, но есть. <br />
			<i>12.03.2024 23:44:17, funduk.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74875/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74875/topic8555/</guid>
			<pubDate>Tue, 12 Mar 2024 23:44:17 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74874/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_XoiaUavq" href="/user/62/" bx-tooltip-user-id="62">nikolz</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/2480/" target="_blank" rel="nofollow">Виталий</a></noindex> написал:<br />1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает &quot;положить сверху NULL&quot;. Для чего мы это делаем?<br />2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!<br />3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.<br />4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.<br /><br />Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит.<br />=============<br /> 1. Не NULL а nil. &nbsp;Чтобы выбрать &nbsp;первый элемент таблицы.<br />------------------------<br />2. &nbsp;-1,1 - выбор с разных концов стека. &nbsp;<br />---------------------------<br />3. см документацию: &nbsp;int lua_next (lua_State *L, int index); &nbsp;Снимает ключ со стека, ложит пару ключ-значение из таблицы<br />Т е ключ функция сама убирает из стека, а значение убираем сами.<br />------------------------------<br />4. qLua - это библиотека функций. У нее нет стека. <br />Стек есть у виртуальной машины луа. qLua никаким боком не имеет отношение к этому.<br />-------------------<br />Не надо ничего предполагать или гадать, лучше прочитать:<br /> <noindex><a href="https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html" target="_blank" rel="nofollow">https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html</a></noindex> <br /> <noindex><a href="https://jevico.github.io/" target="_blank" rel="nofollow">https://jevico.github.io/</a></noindex> <br /> <noindex><a href="https://eligovision.ru/media/upload/lua.pdf" target="_blank" rel="nofollow">https://eligovision.ru/media/upload/lua.pdf</a></noindex> <br />=============<br />Спасибо.<br /><br />1. Не принципиально, суть поняли. Я на разных языках пишу, где-то NULL (что даже привычней мне), но это одно и то же.<br />2. Вот зачем и почему? Т.е. я не понимаю почему в одном случае мы читаем через 1, а в других через -1. От чего зависит? Ну т.е. есть какое-то правило по которым таблицы сверху всегда или что, почему таблицы обчитываются через отрицательные индексы сверху стека?<br />3. Это типа lua_next &nbsp;снимает ключ, а мы через pop убираем остальное после чтения? Жесть какая-то, ну ладно.<br />4. Хорошо, допустим, но вот интересно как раз как это работает в Lua. Потому что у меня сложилось ощущение какого-то изврата. Хочу понять подробнее как оно работает <br />
			<i>12.03.2024 23:04:04, Виталий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74874/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74874/topic8555/</guid>
			<pubDate>Tue, 12 Mar 2024 23:04:04 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74839/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_IldCVPd8" href="/user/2480/" bx-tooltip-user-id="2480">Виталий</a> написал:<br />1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает &quot;положить сверху NULL&quot;. Для чего мы это делаем?<br />2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!<br />3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.<br />4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.<br /><br />Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит.<br />=============<br />1. Не NULL а nil. &nbsp;Чтобы выбрать &nbsp;первый элемент таблицы.<br />------------------------<br />2. &nbsp;-1,1 - выбор с разных концов стека. &nbsp;<br />---------------------------<br />3. см документацию: &nbsp;int lua_next (lua_State *L, int index); &nbsp;Снимает ключ со стека, ложит пару ключ-значение из таблицы<br />Т е ключ функция сама убирает из стека, а значение убираем сами.<br />------------------------------<br />4. qLua - это библиотека функций. У нее нет стека. <br />Стек есть у виртуальной машины луа. qLua никаким боком не имеет отношение к этому.<br />-------------------<br />Не надо ничего предполагать или гадать, лучше прочитать:<br /><noindex><a href="https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html" target="_blank" rel="nofollow">https://web.archive.org/web/20230415092320/https://lua.org.ru/contents_ru.html</a></noindex><br /><noindex><a href="https://jevico.github.io/" target="_blank" rel="nofollow">https://jevico.github.io/</a></noindex><br /><noindex><a href="https://eligovision.ru/media/upload/lua.pdf" target="_blank" rel="nofollow">https://eligovision.ru/media/upload/lua.pdf</a></noindex> <br />
			<i>12.03.2024 06:24:58, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74839/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74839/topic8555/</guid>
			<pubDate>Tue, 12 Mar 2024 06:24:58 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Вопрос по стеку Lua</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message74837/topic8555/">Вопрос по стеку Lua</a></b> <i>стеку Lua и нюансы его чтения</i> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			1. Вопрос к знатокам: при работе со стеком, перед началом чтения через lua_next(L, -2), нам необходимо делать lua_pushnil(L). Зачем? Ведь это по сути означает &quot;положить сверху NULL&quot;. Для чего мы это делаем?<br />2. Далее, почему в некоторых случаях мы читаем данные, как lua_tostring(L, -1). А в некоторых lua_tostring(L, 1). Если я правильно понимаю - это не одно и то же. В стеке из двух элементов индекс 1 - это низ стека, а -1 - верх стека!<br />3. Потом, для чего мы делаем lua_pop(L, 1); при использовании lua_next(L, -2), когда читаем стек? Ведь это удалит только один верхний элемент и все. Т.е., когда я читаю из стека некую таблицу - я должен посмотреть ключ (поле) по lua_next(L, -2) и, если он есть, то прочесть данные через lua_tostring(L, -1). Но потом я удаляю всего 1 элемент сверху. Не понимаю, что за дичь.<br />4. Есть у кого-то понимание / объяснение / картинка как выглядит стек qLua, когда в нем лежат смешанные данные? Т.е. как туда кладется таблица, строки и т.д.? Потому что по логике чтения я могу предположить, что туда кладется сначала ключ, а сверху значение. Это следует из логики чтения: -2 ключ, -1 значение (что тоже какая-то хрень, но это еще как-то понять можно набухавшись). Но что если у меня таблица в таблице или плоские данные, типа строка / число? Документация не то чтобы объясняет это все.<br /><br />Можно конечно забить и принять это как факт, а для себя сделать класс-обертку и забыть навсегда эти ужасы. Но стало уж очень принципиально понять, как это работает и что вообще происходит. <br />
			<i>12.03.2024 05:06:56, Виталий.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message74837/topic8555/</link>
			<guid>http://forum.quik.ru/messages/forum10/message74837/topic8555/</guid>
			<pubDate>Tue, 12 Mar 2024 05:06:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
