<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Объекты в аргументе функций]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=15251</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=15251&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Объекты в аргументе функций».]]></description>
		<lastBuildDate>Tue, 24 Mar 2020 15:27:11 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138567#p138567</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 24 Mar 2020 15:27:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138567#p138567</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138566#p138566</link>
			<description><![CDATA[<p>А есть какое-то различие между <br /><strong>obj := new obj</strong> <br />и <strong>obj := obj.Clone()</strong> ?</p>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Tue, 24 Mar 2020 15:14:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138566#p138566</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138564#p138564</link>
			<description><![CDATA[<div class="quotebox"><cite>kolotilov256 пишет:</cite><blockquote><p>Да уж, как же это не очевидно.</p></blockquote></div><p>Проверил, в джаваскрипте точно так же.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 24 Mar 2020 13:43:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138564#p138564</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138563#p138563</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 24 Mar 2020 13:39:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138563#p138563</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138562#p138562</link>
			<description><![CDATA[<p>Да уж, как же это не очевидно.<br />Если мне нужно, чтобы объект обрабатывался в функции локально, лучше всего прибегнуть к такому изменению?</p><div class="codebox"><pre><code>func(var)
{
	var := new var
	var.abc := 6
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Tue, 24 Mar 2020 12:31:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138562#p138562</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138561#p138561</link>
			<description><![CDATA[<p>Читайте <a href="https://www.autohotkey.com/docs/Concepts.htm#variable-references">здесь</a>.</p>]]></description>
			<author><![CDATA[null@example.com (teadrinker)]]></author>
			<pubDate>Tue, 24 Mar 2020 11:47:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138561#p138561</guid>
		</item>
		<item>
			<title><![CDATA[AHK: Объекты в аргументе функций]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=138560#p138560</link>
			<description><![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>]]></description>
			<author><![CDATA[null@example.com (kolotilov256)]]></author>
			<pubDate>Tue, 24 Mar 2020 10:54:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=138560#p138560</guid>
		</item>
	</channel>
</rss>
