<?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=15251&amp;type=atom" />
	<updated>2020-03-24T15:27:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=15251</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138567#p138567" />
			<content type="html"><![CDATA[<p>Когда используете Clone() — это будет новый объект (хотя, если элементы объекта тоже объекты, они останутся старыми, их нужно отдельно клонировать). Когда используете new — это новый экземпляр старого объекта, он будет зависим от старого:<br /></p><div class="codebox"><pre><code>arr1 := [1, 2, 3]
arr2 := new arr1
MsgBox, % arr2[1]
arr1[1] := &quot;test&quot;
MsgBox, % arr2[1]</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-03-24T15:27:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138567#p138567</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138566#p138566" />
			<content type="html"><![CDATA[<p>А есть какое-то различие между <br /><strong>obj := new obj</strong> <br />и <strong>obj := obj.Clone()</strong> ?</p>]]></content>
			<author>
				<name><![CDATA[kolotilov256]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40656</uri>
			</author>
			<updated>2020-03-24T15:14:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138566#p138566</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138564#p138564" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>kolotilov256 пишет:</cite><blockquote><p>Да уж, как же это не очевидно.</p></blockquote></div><p>Проверил, в джаваскрипте точно так же.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-03-24T13:43:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138564#p138564</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138563#p138563" />
			<content type="html"><![CDATA[<p>Смотря, что в объекте.<br />В любом случае можно воспользоваться методом <a href="https://www.autohotkey.com/docs/objects/Object.htm#Clone">Clone</a>. Если это массив, можно так:<br /></p><div class="codebox"><pre><code>arr := [1, 2, 3]
MyFunc(arr*)
MsgBox, % arr[1]

MyFunc(params*) {
   MsgBox, % params[1]
   params[1] := &quot;test&quot;
   MsgBox, % params[1]
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-03-24T13:39:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138563#p138563</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138562#p138562" />
			<content type="html"><![CDATA[<p>Да уж, как же это не очевидно.<br />Если мне нужно, чтобы объект обрабатывался в функции локально, лучше всего прибегнуть к такому изменению?</p><div class="codebox"><pre><code>func(var)
{
	var := new var
	var.abc := 6
}</code></pre></div>]]></content>
			<author>
				<name><![CDATA[kolotilov256]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40656</uri>
			</author>
			<updated>2020-03-24T12:31:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138562#p138562</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138561#p138561" />
			<content type="html"><![CDATA[<p>Читайте <a href="https://www.autohotkey.com/docs/Concepts.htm#variable-references">здесь</a>.</p>]]></content>
			<author>
				<name><![CDATA[teadrinker]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24515</uri>
			</author>
			<updated>2020-03-24T11:47:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138561#p138561</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[AHK: Объекты в аргументе функций]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=138560#p138560" />
			<content type="html"><![CDATA[<p>Здравствуйте. Произошёл троллинг. Или чертовщина. Называйте как хотите. <br />Просьба объяснить, какого лешего творит автохоткей и как передать объект в функцию, без последствий его изменения...</p><p>Есть вот у нас код.<br />Переменная obj не является глобальной.<br />В функции func нет никаких ByRef.</p><div class="codebox"><pre><code>obj := []
obj.abc := 5
msgbox % obj.abc
func(obj)
msgbox % obj.abc

func(obj)
{
	obj.abc := 6
}</code></pre></div><p>Вопрос какого-ж чёрта изменяется объект? Ладно подумал я, может быть это такое уникальное свойство объекта (о котором я не слышал ни одного упоминания)</p><p>Немного изменил код.</p><p>1) Сделал аргумент функции отличным от объекта (ну на всякий случай)<br />2) Сделал копию объекта, который передаётся в функцию.<br />3) Сделал функцию вроде как локальной</p><div class="codebox"><pre><code>obj := []
obj.abc := 5
msgbox % obj.abc
temp_obj := obj
func(temp_obj)
msgbox % obj.abc

func(var)
{
	local
	var.abc := 6
}</code></pre></div><p>И это не помогло! Результат не изменился. Исходный объект всё равно изменяется -_-</p>]]></content>
			<author>
				<name><![CDATA[kolotilov256]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=40656</uri>
			</author>
			<updated>2020-03-24T10:54:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=138560#p138560</id>
		</entry>
</feed>
