<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK:  Рекурсивный вызов функции]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=8861&amp;type=atom" />
	<updated>2013-11-05T04:22:55Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=8861</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76926#p76926" />
			<content type="html"><![CDATA[<p>Спасибо за информацию.</p><p>Задачу я свою решил, т.е. написал скрипт, правда немного иным способом.</p><p>Вопрос - снят.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-05T04:22:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76926#p76926</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76925#p76925" />
			<content type="html"><![CDATA[<p>В функцию передаются не переменные, а их значения или ссылки на них. Так что этот вопрос о типе смысла не имеет.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-11-05T04:13:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76925#p76925</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76921#p76921" />
			<content type="html"><![CDATA[<p>После долгой борьбы выяснил, что по сути всё работает, но почему то значение передаваемое в функцию пропадает после return, хотя оно должно было пропадать т.к. функция завершена, т.е. до выхода надо сделать перенесение передаваемого параметра в функцию в статическую переменную функции.</p><div class="codebox"><pre><code> fn(sa)
{
 static sasa:=0, sa1

 sa1:=sa
</code></pre></div><p> Роль независимого потока играет таймер, который считает всё что нужно посчитать, не зависимо от числа нажатий/вызова функции.<br />Задержки для того, что бы видеть - они функциональной роли не несут</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>#Persistent
RShift::
 sasa+=1
 fn(sasa)
 sleep 1000
return

fn(sa)
{
 static sasa:=0, sa1

 sa1:=sa
 if (ftm)
      return
 settimer tin , 300
 ftm:=true
 ;gosub tin &lt;---- не обязательно, таймер будет работать пока не будет сделан выход из скрипта.
 return

 tin:
 sasa:=sasa+sa1 
   sleep 150
   tooltip %sasa%
 return  
}</code></pre></div></div></div><p> и остался вопрос как записать тип переменной передаваемой в функцию - такое вот не проходит <strong>fn(static: sa:=0 )</strong></p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T19:42:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76921#p76921</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76920#p76920" />
			<content type="html"><![CDATA[<p>Причём, если не делать функцию, а сделать подпрограмму, то всё работает и считается - вопрос почему?<br />Какая разница между Global и Static? Кроме их значений для функции?</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T18:59:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76920#p76920</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76919#p76919" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>Нет. Просто &quot;а&quot; напечатана на другой раскладке.</p></blockquote></div><p> ну, а так почему? </p><div class="codebox"><pre><code>#Persistent
RShift::
 i+=10
 ;msgbox % i
 fn(i)
return

fn(sa)
{
 ;static b,ftm=false
 if (ftm)
      return
 ;ftm:=false
 settimer l , 10
 ftm:=!ftm
 return

 l:
   ;sasa:=sasa+sa
   sasa+=sa
   tooltip %sasa%
 return  
}</code></pre></div><p> причём при <strong>sasa:=sasa+sa</strong> ничего не выводит, а при <strong>sasa+=sa</strong> выводит&nbsp; 0</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T18:43:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76919#p76919</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76916#p76916" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Indomito пишет:</cite><blockquote><div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>А почему &quot;b&quot; все время равно 0?</p></blockquote></div><p> просто в loop значение не может попасть, хотя функция вызывается.</p></blockquote></div><p>Нет. Просто &quot;а&quot; напечатана на другой раскладке.</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2013-11-04T18:30:55Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76916#p76916</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76914#p76914" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Indomito пишет:</cite><blockquote><p> горячая клавиша это так было проще вызвать функцию непрерывно работающую, а если вызов происходит из скрипта по каким-либо условиям?</p></blockquote></div><p>А что, не происходит разве? Всё равно из другого потока вызов имеется в виду, а не рекурсия. Этот вызов вклинится между командами функции первого вызова.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-11-04T18:21:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76914#p76914</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76913#p76913" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>А почему &quot;b&quot; все время равно 0?</p></blockquote></div><p> просто в loop значение не может попасть, хотя функция вызывается.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T18:20:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76913#p76913</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76912#p76912" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>YMP пишет:</cite><blockquote><p>А вам, наверно, нужна директива #MaxThreadsPerHotkey.</p></blockquote></div><p> горячая клавиша это так было проще вызвать функцию непрерывно работающую, а если вызов происходит из скрипта по каким-либо условиям?</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T18:16:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76912#p76912</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76910#p76910" />
			<content type="html"><![CDATA[<p>А почему &quot;b&quot; все время равно 0?</p><br /><p>Leater:<br />Переменная &quot;a&quot; почему-то русская была...</p>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2013-11-04T18:11:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76910#p76910</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76909#p76909" />
			<content type="html"><![CDATA[<p>Вызвать хоткей несколько раз поможет <strong>#MaxThreadsPerHotkey</strong>, хотя особой пользы это не принесет.<br />btw, рекурсия - это несколько другое, в твоем примере ф-ия не вызывает саму себя.<br />upd: в общем, пока писал... смотри выше ))</p>]]></content>
			<author>
				<name><![CDATA[Irbis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27384</uri>
			</author>
			<updated>2013-11-04T18:11:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76909#p76909</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76908#p76908" />
			<content type="html"><![CDATA[<p>Рекурсивный — это вызов функции из неё самой. А вам, наверно, нужна директива #MaxThreadsPerHotkey.</p>]]></content>
			<author>
				<name><![CDATA[YMP]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=81</uri>
			</author>
			<updated>2013-11-04T18:06:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76908#p76908</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76907#p76907" />
			<content type="html"><![CDATA[<p>Ну что? Что Loop, что Goto блокируют функцию, т е получается второго входа нельзя сделать пока не будет сделанl из функции по RETURN.</p><p>Можно конечно запустить таймер и выйти, т.е. создать новый поток, а в одном потоке повторный вход не возможен, так?</p><div class="quotebox"><cite>Alectric пишет:</cite><blockquote><p>Это из-за цикла в функции.</p><p>Так должно работать:</p></blockquote></div><p> угу, так я и подумал, хотя можно и проще - таймер в той же функции запустить и выйти.</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T18:06:44Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76907#p76907</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76906#p76906" />
			<content type="html"><![CDATA[<p>Это из-за цикла в функции.</p><p>Так должно работать:<br /></p><div class="codebox"><pre><code>#Persistent
#SingleInstance,Force

RShift::
  i+=10
  msgbox % i
  fn(i)
return

fn(a)
{
  static b:=0
  settimer,loop,1
}


loop:
{
  b+=а
  tooltip %b%
}
return
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Alectric]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26027</uri>
			</author>
			<updated>2013-11-04T17:56:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76906#p76906</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK:  Рекурсивный вызов функции]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=76905#p76905" />
			<content type="html"><![CDATA[<p>Я для проверки написал такой скрипт </p><div class="codebox"><pre><code>#Persistent
RShift::
 i+=10
 msgbox % i
 fn(i)
return

fn(a)
{
 static b:=0
 loop
  {
   b+=а
   tooltip %b%
  }
}</code></pre></div><p> Но второго вызова функции не происходит.<br />Я в чём то ошибся или же нельзя вызвать функцию пока она не закончит работу, т.е. не выйдет по RETURN ?</p>]]></content>
			<author>
				<name><![CDATA[Indomito]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27285</uri>
			</author>
			<updated>2013-11-04T17:54:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=76905#p76905</id>
		</entry>
</feed>
