<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Передача массива в функцию - теряется последовательность ключей]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Передача массива в функцию - теряется последовательность ключей форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Fri, 24 Apr 2026 15:44:15 +0300</pubDate>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44592/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_KyXvEW6Y" href="/user/62/" bx-tooltip-user-id="62">Николай Камынин</a> написал:<br /> <br />====quote====<br /><noindex><a href="/user/13936/" target="_blank" rel="nofollow">Иван</a></noindex> написал:<br />LogWrite(&quot;report&quot;, comment, {Trade=100, Code=Si, Q=&quot;-&quot;..10, Price=10000, Pips=1});<br />В функции делаю чтение массива:Код<br />function LogWrite(name, log_type, log_array)<br /><br /> &nbsp; local content = &quot;&quot;;<br /> &nbsp; local i = 1;<br /> &nbsp; for key, value in pairs(log_array) do<br /> &nbsp; &nbsp; &nbsp;content = content..&quot;\t&quot;..value..&quot;;&quot;;<br /> &nbsp; &nbsp; &nbsp;content = string.gsub(content,&quot;(&#91;.&#93;+)&quot;,&quot;,&quot;);<br /> &nbsp; &nbsp; &nbsp;i = i + 1;<br /> &nbsp; end;<br /> &nbsp; message(tostring(content));<br /> &nbsp; <br />end;<br />=============<br /> function LogWrite(name, log_type,t)<br /> &nbsp; local content = &quot;&quot;;<br /> &nbsp; local i = 1;<br /> &nbsp; for m=1,#t do<br />	local value=tostring(t&#91;m&#93;)<br /> &nbsp; &nbsp; &nbsp;content = content..&quot;\t&quot;..value..&quot;;&quot;;<br /> &nbsp; &nbsp; &nbsp;content = string.gsub(content,&quot;(&#91;.&#93;+)&quot;,&quot;,&quot;);<br /> &nbsp; &nbsp; &nbsp;i = i + 1;<br /> &nbsp; end;<br /> &nbsp; message(tostring(content));<br />end;<br />local Si=123<br />LogWrite(&quot;report&quot;, &quot;&quot;, {100,Si,&quot;-&quot;..10,10000,1});<br />-------------------<br />	100;	123;	-10;	10000;	1;<br />&gt;Exit code: 0<br />=============<br />Наверное это единственное простое решение. <br />
			<i>09.05.2020 11:57:11, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44592/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44592/topic5387/</guid>
			<pubDate>Sat, 09 May 2020 11:57:11 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44582/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_LbbOM33k" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a> написал:<br />LogWrite(&quot;report&quot;, comment, {Trade=100, Code=Si, Q=&quot;-&quot;..10, Price=10000, Pips=1});<br />В функции делаю чтение массива:Код<br />function LogWrite(name, log_type, log_array)<br /><br /> &nbsp; local content = &quot;&quot;;<br /> &nbsp; local i = 1;<br /> &nbsp; for key, value in pairs(log_array) do<br /> &nbsp; &nbsp; &nbsp;content = content..&quot;\t&quot;..value..&quot;;&quot;;<br /> &nbsp; &nbsp; &nbsp;content = string.gsub(content,&quot;(&#91;.&#93;+)&quot;,&quot;,&quot;);<br /> &nbsp; &nbsp; &nbsp;i = i + 1;<br /> &nbsp; end;<br /> &nbsp; message(tostring(content));<br /> &nbsp; <br />end;<br />=============<br />function LogWrite(name, log_type,t)<br /> &nbsp; local content = &quot;&quot;;<br /> &nbsp; local i = 1;<br /> &nbsp; for m=1,#t do<br />	local value=tostring(t&#91;m&#93;)<br /> &nbsp; &nbsp; &nbsp;content = content..&quot;\t&quot;..value..&quot;;&quot;;<br /> &nbsp; &nbsp; &nbsp;content = string.gsub(content,&quot;(&#91;.&#93;+)&quot;,&quot;,&quot;);<br /> &nbsp; &nbsp; &nbsp;i = i + 1;<br /> &nbsp; end;<br /> &nbsp; message(tostring(content));<br />end;<br />local Si=123<br />LogWrite(&quot;report&quot;, &quot;&quot;, {100,Si,&quot;-&quot;..10,10000,1});<br />-------------------<br />	100;	123;	-10;	10000;	1;<br />&gt;Exit code: 0 <br />
			<i>09.05.2020 09:15:48, Николай Камынин.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44582/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44582/topic5387/</guid>
			<pubDate>Sat, 09 May 2020 09:15:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44579/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_0WOksXLf" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a> написал:<br />Мне хотелось бы в функцию передавать именно массив в таком виде (хэш-таблице).<br />Но как тогда сохранить порядок ключей что передается?<br />=============<br />Вы можете создать метамод для такой таблицы, чтобы при вставке происходила сортировка по представлению ключа и сохранялась в внутренний отсортированный массив.<br />Плюс надо создать итератор класса по внутренней таблице, выводящий значения. Но это сложная структура и удвоение памяти.<br /><br />Для хранения проще всего создать отдельный массив ключей в нужном порядке. А уже перебирая его, получать значения в постоянном порядке. &nbsp; <br />
			<i>09.05.2020 08:39:23, Nikolay.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44579/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44579/topic5387/</guid>
			<pubDate>Sat, 09 May 2020 08:39:23 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44576/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_c2WWUFQR" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a> написал:<br />Мне хотелось бы в функцию передавать именно массив в таком виде (хэш-таблице).<br />Но как тогда сохранить порядок ключей что передается?<br />=============<br />В таком виде - никак. Сравните с сями, у вас либо структура и вы обращаетесь к элементам по имени (t.a, t.b) и вообще нет способа по ним итерировать, либо у вас массив и вы обращаетесь по индексу (t&#91;0&#93;, t&#91;1&#93;) и имен никаких нет. Тут то же самое, либо имена (плюс еще и возможность в цикле по ним пройти, хоть и в непредсказуемом порядке, с помощью pairs), либо индексы и ipairs в заданном порядке. <br />
			<i>09.05.2020 00:21:37, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44576/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44576/topic5387/</guid>
			<pubDate>Sat, 09 May 2020 00:21:37 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44570/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Мне хотелось бы в функцию передавать именно массив в таком виде (хэш-таблице).<br />Но как тогда сохранить порядок ключей что передается? <br />
			<i>08.05.2020 23:25:31, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44570/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44570/topic5387/</guid>
			<pubDate>Fri, 08 May 2020 23:25:31 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44568/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_FICviVCN" href="/user/13936/" bx-tooltip-user-id="13936">Иван</a> написал:<br />С чем это может быть связано?<br />=============<br />С тем, что это не массив, а хэш-таблица. <br />
			<i>08.05.2020 22:32:52, Anton.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44568/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44568/topic5387/</guid>
			<pubDate>Fri, 08 May 2020 22:32:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Передача массива в функцию - теряется последовательность ключей</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message44567/topic5387/">Передача массива в функцию - теряется последовательность ключей</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день.<p>Передаю в функцию 3 переменных, третья из которых массив = {}</p>
====code====
<pre>LogWrite("report", comment, {Trade=100, Code=Si, Q="-"..10, Price=10000, Pips=1});
</pre>
=============
<br />В функции делаю чтение массива:
====code====
<pre>function LogWrite(name, log_type, log_array)

&nbsp;&nbsp;&nbsp;local content = "";
&nbsp;&nbsp;&nbsp;local i = 1;
&nbsp;&nbsp;&nbsp;for key, value in pairs(log_array) do
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content = content.."&#92;t"..value..";";
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;content = string.gsub(content,"(&#91;.&#93;+)",",");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i = i + 1;
&nbsp;&nbsp;&nbsp;end;
&nbsp;&nbsp;&nbsp;message(tostring(content));
&nbsp;&nbsp;&nbsp;
end;
</pre>
=============
Массив считывается через цикл, но почему-то у него получается иная последовательность.<br />На выходе ожидаю строку: 100; Si; -10; 10000; 1;<br />По факту последовательность другая: Si; 1; 100; -10; 10000; <br /><br />С чем это может быть связано? <br />
			<i>08.05.2020 22:22:10, Иван.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message44567/topic5387/</link>
			<guid>http://forum.quik.ru/messages/forum10/message44567/topic5387/</guid>
			<pubDate>Fri, 08 May 2020 22:22:10 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
