<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: For-loop принцип роботы]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=14505</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=14505&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: For-loop принцип роботы».]]></description>
		<lastBuildDate>Wed, 23 Jan 2019 09:28:21 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131534#p131534</link>
			<description><![CDATA[<p>Весьма верное замечание, товарища, девиз которого придумывать костыли. Вероятно, кроме личного мотива не выглядеть глупым, у Вас есть ещё и задокументированные основания от специалистов, которых упоминаете, раз считаете переход к подобным сравнениям лучшим продолжением дискуссии.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Wed, 23 Jan 2019 09:28:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131534#p131534</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131533#p131533</link>
			<description><![CDATA[<p>Мне кажется психолог с вас не получится, товарищ <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.</p>]]></description>
			<author><![CDATA[null@example.com (belyankin12)]]></author>
			<pubDate>Wed, 23 Jan 2019 06:41:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131533#p131533</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131521#p131521</link>
			<description><![CDATA[<p>Загвоздка в том, что называя &quot;вещи&quot; своими именами, Вы используете определения, не относящиеся к контексту, объясняя предмет чужого любопытства. Например, оператор <em>if</em> производит булевы операции, а MsgBox, у Вас демонстрирует содержимое массива с ключом <em>n</em>, переданным в <em>value</em>, который получает значение <em>A_Index</em> на каждой итерации, когда всё это лишь перегружает код. Создаётся впечатление, что Вы намеренно это сделали, только для того, чтобы сравнить возможность более короткой записи, но код, который реализует Вашу логику можно записать и так:<br /></p><div class="codebox"><pre><code>
arr := [&quot;abc&quot;, &quot;def&quot;, &quot;ghj&quot;]
While (arr[ A_Index ])
	MsgBox % arr[ A_Index ]
</code></pre></div><p>А если первый элемент массива пустой, Break? Что Происходит в <em>For</em>, в этом случае?<br /></p><div class="quotebox"><cite>Military пишет:</cite><blockquote><p>Читал справку на английском так и нечего не понял.<br />Есть такой скрипт:<br />...<br />Возможно кто-то может подробно объяснить каким образом &quot;for k, v in []&quot; работает и в целом заставляет работать этот скрипт.</p></blockquote></div><p>По словам ТС, видно, что ему требовалось объяснение примера, который он привёл, а не то, почему, под использованием оператора <em>For</em>, Вы, считаете более короткую запись с <em>Loop</em>.</p><p>Так же, парсинг - синтаксический анализ. Относится это определение в первую очередь к обработке больших объёмов текста и в этой сущности, не имеет ничего общего с тем, что Вы подразумеваете под названием этой &quot;вещи&quot; своим именем.</p><p>Вы несёте ответственность перед теми, кто внимает Вашим словам в поисках истины, а раз так, придерживайтесь пожалуйста той терминологии и концепций, что приняты по соглашению оформления кода выбранного Вами синтаксиса. Иначе, Вы запутываете слушателя, рассказывая не то, что обозначает сущность, а то, что <strong>только Вы</strong> под этим подразумеваете. Это, априори, разные &quot;вещи&quot;.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Tue, 22 Jan 2019 20:04:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131521#p131521</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131508#p131508</link>
			<description><![CDATA[<p>Я не брал за основу код ТС ибо по его словам явно видно что он взял этот код только потому что там есть слово for и потому что он работает. Своими словами я объяснил максимально наглядно и просто, пусть и показав только верхушку айзберга. А насчёт парсинга согласен - назвал вещь своим именем просто.</p>]]></description>
			<author><![CDATA[null@example.com (belyankin12)]]></author>
			<pubDate>Tue, 22 Jan 2019 15:32:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131508#p131508</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131496#p131496</link>
			<description><![CDATA[<p><strong>belyankin12</strong>, у Вас получилось объяснение на основе сравнения свойств. Это как сравнивать по высоте дом и дерево, где дерево растёт само и ждать долго, а дом можно построить высоким за месяц, в то время как это объекты, описывающие разные принципы, а парсинг, это совсем другое.</p><p>В Вашем первом примере, в теле цикла не прасинг происходит, а обращение к элементам массива по индексу.</p><p>Loop - организует цикл, повторяющий своё тело n раз, или бесконечно, если не получил условия.</p><p>For - создаёт объект-перечислитель, метод Next() которого, извлекает ключ и его значение свойств объекта по алфавиту до тех пор, пока результат не вернёт пустое значение, если вычисленное выражение является объектом. <a href="https://autohotkey.com/docs/commands/For.htm">Справка</a>:<br /></p><div class="codebox"><pre><code>
obj := {&quot;count&quot;: 4, &quot;item&quot;: &quot;book&quot;}
_enum := (obj).NewEnum()
if IsObject(_enum)
    while _enum.Next(Key, Value)
    {
        MsgBox % &quot;Key = &quot; Key &quot;`nValue = &quot; Value
    }
</code></pre></div><p><strong>Military</strong>, в Вашем примере, строка:<br /></p><div class="codebox"><pre><code>SendNumFn := Func(&quot;SendNum&quot;).Bind(v)</code></pre></div><p>Сохраняет ссылку в переменной <em>SendNumFn</em>, на функцию с именем <em>SendNum</em> и .Bind(v) - устанавливает значение параметра, который будет передан ей при вызове. Согласно порядку, эти значение будут идти от 1 до 5 включительно по порядку, ключей массива, перечисляемого циклом For.<br />Далее, строка:<br /></p><div class="codebox"><pre><code>SetTimer % SendNumFn, % &quot;-&quot; rnd(1, 100)</code></pre></div><p>Создаёт то же количество таймеров, вызывающие функцию <em>SendNum</em>, обращаясь к её вызову по ссылке из <em>SendNumFn</em>, которая в свою очередь должна напечатать: &quot;12345&quot;, но поскольку таймеры вызываются со случайным интервалом от 1 до 100 миллисекунд, получается случайный порядок печатаемых цифр и поскольку интервал таймера указывается отрицательным, таймер вызывается только один раз для каждой ссылки.</p>]]></description>
			<author><![CDATA[null@example.com (KusochekDobra)]]></author>
			<pubDate>Tue, 22 Jan 2019 09:09:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131496#p131496</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131495#p131495</link>
			<description><![CDATA[<p><strong>belyankin12</strong> Спасибо большое теперь стало ясно, а что же делает функция <span style="color: #ff00ff">Func.Bind()</span>?<br />Удивительно сколько всего в таком маленьком коде, если еще учесть генерацию случайных чисел и таймер <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Military)]]></author>
			<pubDate>Tue, 22 Jan 2019 07:53:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131495#p131495</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131494#p131494</link>
			<description><![CDATA[<p>Давай на примере обычного луп покажу:<br /></p><div class="codebox"><pre><code>
arr := [&quot;abc&quot;, &quot;def&quot;, &quot;ghj&quot;]
Loop {
	n := A_Index
	if (arr[n] = &quot;&quot;) {
		break
	}

	value := arr[n]
	msgbox, % value
}</code></pre></div><p>Вышеприведенный код парсит по очереди все ключи массива arr до того момента пока значения не закончатся, а в переменной value хранится текущее значение массива с ключем n который совпадает с A_Index. Теперь посмотрим на for:<br /></p><div class="codebox"><pre><code>
arr := [&quot;abc&quot;, &quot;def&quot;, &quot;ghj&quot;]
for k, v in arr
{
	msgbox, % v
}</code></pre></div><p>Этот код будет делать абсолютно те же действия и показывать будет те же значения, но он значительно короче. В переменной k хранится значение ключа в текущей итерации цикла (аналог переменной n из первого кода), переменная v хранит значение в массиве arr под ключем k (аналог переменной value в первом коде). Цикл выполняется до тех пор пока v не пустое, а как только v вернет пустоту (значения закончатся в массиве) - цикл прерывается. Ну и конечно всякие break и A_Index работают и в таких циклах.</p>]]></description>
			<author><![CDATA[null@example.com (belyankin12)]]></author>
			<pubDate>Tue, 22 Jan 2019 07:03:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131494#p131494</guid>
		</item>
		<item>
			<title><![CDATA[AHK: For-loop принцип роботы]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=131493#p131493</link>
			<description><![CDATA[<p>Читал справку на английском так и нечего не понял.<br />Есть такой скрипт:<br /></p><div class="codebox"><pre><code>
F3::
For k, v in [1, 2, 3, 4, 5]
{
    SendNumFn := Func(&quot;SendNum&quot;).Bind(v)
    SetTimer % SendNumFn, % &quot;-&quot; rnd(1, 100)
}
 
SendNum(n) {
    Send % n
}
rnd(min, max) {
        random, ran, min, max
        return ran
}

</code></pre></div><p>Возможно кто-то может подробно объяснить каким образом &quot;for k, v in []&quot; работает и в целом заставляет работать этот скрипт.</p>]]></description>
			<author><![CDATA[null@example.com (Military)]]></author>
			<pubDate>Tue, 22 Jan 2019 04:11:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=131493#p131493</guid>
		</item>
	</channel>
</rss>
