<?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="http://forum.script-coding.com/extern.php?action=feed&amp;tid=13172&amp;type=atom" />
	<updated>2017-11-07T15:04:52Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=13172</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120895#p120895" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>var2 := &quot;start&quot;
var[var2](i)</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2017-11-07T15:04:52Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120895#p120895</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120894#p120894" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>stealzy пишет:</cite><blockquote><p>ObjBindMethod</p></blockquote></div><p>Да, именно то. Спасибо! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[MandarinKa02]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34409</uri>
			</author>
			<updated>2017-11-07T14:54:25Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120894#p120894</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120892#p120892" />
			<content type="html"><![CDATA[<p><strong>MandarinKa02</strong>, если не поняли, экземпляр создается с помощью ключевого слова new.<br />Использовать классы, как это делаете вы, допустимо, но абсолютно неправильно.<br /></p><div class="codebox"><pre><code>y := new _class1, x := new _class2
x._caller := y, y.start(x)

class _class1 {
	start(x) {
		x.start(10) ;даем команду считать до ста
	}
	action(value) {
		Tooltip % value
	}
}
class _class2 {
	start(value) {
		Loop 100 {
			this._caller.action(A_Index)
			Sleep 10
		}
	}
}</code></pre></div><div class="quotebox"><cite>MandarinKa02 пишет:</cite><blockquote><p>var.%var2%(i)</p></blockquote></div><p>ObjBindMethod.</p>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2017-11-07T14:32:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120892#p120892</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120891#p120891" />
			<content type="html"><![CDATA[<p><strong>stealzy</strong>, немного не то, что я хотел.</p><p><strong>KusochekDobra</strong>, тоже не совсем то.</p><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>MsgBox Start
_class2.set(Func(&quot;action&quot;))
_class1.start()
MsgBox End
Reload
return

action(value) {
	Tooltip % value
}

F5::Reload

class _class1 {
	start() {
		_class2.start(10) ;даем команду считать до ста
	}
	action(value) {
		Tooltip % value
	}
}


class _class2 {
	Static _func
	set(func) {
		this._func := func
	}
	start(value) {
		i := 0
		While(i != 100) {
			i+= 1
			func := this._func
			%func%(i)
			Sleep 10
		}
	}
}
</code></pre></div></div></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"><p>var&nbsp; := new _class1<br />var2 := &quot;start&quot;<br /><span style="color: red">var.%var2%(i)</span></p><br /><br /><p>class _class1 {<br />	start(value) {<br />		msgbox var=%value%<br />	}<br />}</p></div></div><p>т.е. вместо %var2% должно подставиться start-----&gt; var.start(i)</p>]]></content>
			<author>
				<name><![CDATA[MandarinKa02]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34409</uri>
			</author>
			<updated>2017-11-07T14:22:11Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120891#p120891</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120864#p120864" />
			<content type="html"><![CDATA[<p>Насколько помню, все объекты - это ссылочный тип. Тогда, чтобы иметь доступ к пространству имён какого-то класса, достаточно иметь его экземпляр:<br /></p><div class="codebox"><pre><code>
;MsgBox Start
oClass := New _class1()
oClass.start()
MsgBox End
;Reload
return

F5::Reload

class _class1 {
	lClass := {}
	__New() {
		this.lClass := New _class2()	; ссылка на пространство имён _class2
	}
	start() {
		this.lClass.Action(100) ;даем команду считать до ста
		this.action()
	}
	action() {
		Tooltip % this.lClass.counter
	}
}
class _class2 {
	counter := &quot;&quot;
	Action(value) {
		this.counter := 0
		while (this.counter &lt; value)
			this.counter++
	}
}
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[KusochekDobra]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=33846</uri>
			</author>
			<updated>2017-11-07T00:19:23Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120864#p120864</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120862#p120862" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>MandarinKa02 пишет:</cite><blockquote><p>_class1.Action(i) здесь не пойдет</p></blockquote></div><p>Тогда уж _class1.myCounter := i.<br />А вообще, откуда по-вашему вызываемый класс должен знать переменные вызывающего?<br /></p><div class="codebox"><pre><code>_class2.Start(10, this.counter)
...
Start(value, ByRef callerCounter)
...
callerCounter := A_Index</code></pre></div><p>Думаю, мысль понятна.<br />Подобным же образом можно передать и экземпляр класса. Принимаем его в переменную <em>caller</em> и присваиваем <em>caller.counter := A_Index</em>.</p>]]></content>
			<author>
				<name><![CDATA[stealzy]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=31937</uri>
			</author>
			<updated>2017-11-06T22:34:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120862#p120862</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: ссылка на класс]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=120861#p120861" />
			<content type="html"><![CDATA[<p>Всем привет, есть два класса. Один класс дает второму задание: считать постепенно до 100.<br />Допустим вот:<br /></p><div class="codebox"><pre><code>
MsgBox Start
_class1.start()
MsgBox End
Reload
return

F5::Reload

class _class1 {
	start() {
		_class2.start(10) ;даем команду считать до ста
	}
	action(value) {
		Tooltip % value
	}
}


class _class2 {
	Static _func
	set(func) {
		this._func := func
	}
	start(value) {
		i := 0
		While(i != 100) {
			i+= 1
			;&lt;--сообщить значение--&gt;
			Sleep 10
		}
	}
}

</code></pre></div><p>Как сделать так чтобы после каждого подсчета(i++), второй класс посылал значение экземпляру первого. (т.к. это класс, а не функция и я собираюсь использовать в дальнейших скриптах, то _class1.action(i) здесь не пойдет.)</p>]]></content>
			<author>
				<name><![CDATA[MandarinKa02]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=34409</uri>
			</author>
			<updated>2017-11-06T20:51:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=120861#p120861</id>
		</entry>
</feed>
