<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Комментарии на: Передача данных по ссылке</title>
	<atom:link href="https://autolisp.ru/2013/01/10/byref/feed/" rel="self" type="application/rss+xml" />
	<link>https://autolisp.ru/2013/01/10/byref/</link>
	<description>LISP для AutoCAD</description>
	<lastBuildDate>Tue, 24 Feb 2026 16:11:05 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.0</generator>
	<item>
		<title>От: Привалов Дмитрий</title>
		<link>https://autolisp.ru/2013/01/10/byref/comment-page-1/#comment-84668</link>
		<dc:creator><![CDATA[Привалов Дмитрий]]></dc:creator>
		<pubDate>Thu, 12 Sep 2019 12:52:20 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=1052#comment-84668</guid>
		<description><![CDATA[Ну все, кажется разобрался

(defun fun1(val)
	(print (vl-symbol-name val))
	(print (vl-symbol-value val))
)

(setq A2 3)
(fun1 &#039;A2)]]></description>
		<content:encoded><![CDATA[<p>Ну все, кажется разобрался</p>
<p>(defun fun1(val)<br />
	(print (vl-symbol-name val))<br />
	(print (vl-symbol-value val))<br />
)</p>
<p>(setq A2 3)<br />
(fun1 'A2)</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Привалов Дмитрий</title>
		<link>https://autolisp.ru/2013/01/10/byref/comment-page-1/#comment-84667</link>
		<dc:creator><![CDATA[Привалов Дмитрий]]></dc:creator>
		<pubDate>Thu, 12 Sep 2019 12:24:13 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=1052#comment-84667</guid>
		<description><![CDATA[сообщение обрезалось....
; 5й пример
(defun fun1(val)
	(print (= !val 3))
	(print (&lt; !val 4))
)

(fun1 A2) ; вернет nil и T
(fun1 &#039;A2) ; вернет nil и T

Примечание: перепроверил то, что не влезло.
с виду (print (&lt; !val 4)) сработало. А (print (= !val 3)) нет. О чем пытался написать ранее.
но протестировав варианты  пришел к выводу, что !val не дает доступ к значению переменной.

Возможно есть другой синтаксис для доступа к значению переменной, переданной по ссылке.

Также можно записать (set (quote A2) 4) как аналог  (set &#039;A2 4) .]]></description>
		<content:encoded><![CDATA[<p>сообщение обрезалось....<br />
; 5й пример<br />
(defun fun1(val)<br />
	(print (= !val 3))<br />
	(print (&lt; !val 4))<br />
)</p>
<p>(fun1 A2) ; вернет nil и T<br />
(fun1 &#039;A2) ; вернет nil и T</p>
<p>Примечание: перепроверил то, что не влезло.<br />
с виду (print (&lt; !val 4)) сработало. А (print (= !val 3)) нет. О чем пытался написать ранее.<br />
но протестировав варианты  пришел к выводу, что !val не дает доступ к значению переменной.</p>
<p>Возможно есть другой синтаксис для доступа к значению переменной, переданной по ссылке.</p>
<p>Также можно записать (set (quote A2) 4) как аналог  (set 'A2 4) .</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Привалов Дмитрий</title>
		<link>https://autolisp.ru/2013/01/10/byref/comment-page-1/#comment-84666</link>
		<dc:creator><![CDATA[Привалов Дмитрий]]></dc:creator>
		<pubDate>Thu, 12 Sep 2019 11:53:30 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=1052#comment-84666</guid>
		<description><![CDATA[Хорошая статья, мне как раз нужно было передать ссылку на переменную в функцию.

Чтобы лучше разобраться.

;1й пример
(defun fun1(val)
	(print val)
)

(setq A2 3)
(fun1 A2) ; 3 - выведет значение 
(fun1 &#039;A2) ; A2 - выводит имя ссылки

;2й пример
(setq A2 3)
(set &#039;A2 4)  ; SET присваивает ссылке с именем A2 значение 4.
(print A2) ; 4 - выведет значение 

;3й пример
(set &#039;A2 4)  ; SET создает не объявленную ранее переменную A2 и присваивает ссылке с именем A2 значение 4.
(print A2) ; 4 - выведет значение

комментарий: возможно ДИМА_  ошибся с set в том, что она может как создавать переменную с новым именем, так и менять существующую. Но возможно в чем то и прав, т.к. при сравнении значений есть нюансы.

;4й пример
(defun fun1(val)
	(print (= val 3))
	(print (&lt; val 4))
)

(setq A2 3)
(fun1 A2) ; Вернет Т и Т
(fun1 &#039;A2) ; Вернет nil и ошибка: неверный тип агрумента для сравнения: A2 4

; примечание: аГРумента мне выдал AutoCAD 2010 )))
; в статье освещено как присвоить переменной, переданной по ссылке значение внутри функции. мне в функции нужно было работать со значением внешней переменной. Собственно ради этого и разбирался.

; 5й пример
(defun fun1(val)
	(print (= !val 3))
	(print (&quot;, &quot;&lt;&quot; научился (&lt; !val 4) и мне достаточно для задачи.
 а вот с равенством есть над чем подумать. Попробовал (print (equal !val 3)) не помогло!]]></description>
		<content:encoded><![CDATA[<p>Хорошая статья, мне как раз нужно было передать ссылку на переменную в функцию.</p>
<p>Чтобы лучше разобраться.</p>
<p>;1й пример<br />
(defun fun1(val)<br />
	(print val)<br />
)</p>
<p>(setq A2 3)<br />
(fun1 A2) ; 3 - выведет значение<br />
(fun1 'A2) ; A2 - выводит имя ссылки</p>
<p>;2й пример<br />
(setq A2 3)<br />
(set 'A2 4)  ; SET присваивает ссылке с именем A2 значение 4.<br />
(print A2) ; 4 - выведет значение </p>
<p>;3й пример<br />
(set 'A2 4)  ; SET создает не объявленную ранее переменную A2 и присваивает ссылке с именем A2 значение 4.<br />
(print A2) ; 4 - выведет значение</p>
<p>комментарий: возможно ДИМА_  ошибся с set в том, что она может как создавать переменную с новым именем, так и менять существующую. Но возможно в чем то и прав, т.к. при сравнении значений есть нюансы.</p>
<p>;4й пример<br />
(defun fun1(val)<br />
	(print (= val 3))<br />
	(print (&lt; val 4))<br />
)</p>
<p>(setq A2 3)<br />
(fun1 A2) ; Вернет Т и Т<br />
(fun1 &#039;A2) ; Вернет nil и ошибка: неверный тип агрумента для сравнения: A2 4</p>
<p>; примечание: аГРумента мне выдал AutoCAD 2010 )))<br />
; в статье освещено как присвоить переменной, переданной по ссылке значение внутри функции. мне в функции нужно было работать со значением внешней переменной. Собственно ради этого и разбирался.</p>
<p>; 5й пример<br />
(defun fun1(val)<br />
	(print (= !val 3))<br />
	(print (", "&lt;&quot; научился (&lt; !val 4) и мне достаточно для задачи.<br />
 а вот с равенством есть над чем подумать. Попробовал (print (equal !val 3)) не помогло!</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Дима_</title>
		<link>https://autolisp.ru/2013/01/10/byref/comment-page-1/#comment-37406</link>
		<dc:creator><![CDATA[Дима_]]></dc:creator>
		<pubDate>Mon, 14 Jan 2013 20:30:41 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=1052#comment-37406</guid>
		<description><![CDATA[SET делает ровно то-же что и SETQ, только принимает аргументы имени в другом формате - setq служит для связывания &quot;жесткого&quot; програмного имени со значением, а set позоляет использовать имена которые могут &quot;придумываются&quot; уже во время выполнения программы (то есть они и их количество может быть различными при различных исходных данных - имена построенны на основе самих данных) - на самом деле это можно сделать и при помощи setq и eval - но это т.н. &quot;синтетический сахар&quot;.
Как это работает:
[cc lang=&quot;lisp&quot;]
(defun fun1 (/ lst1) ;локальное имя
   (setq lst1 &#039;(1 2 3)); заносим в lst1 ссылку на начало списка 1 2 3
   (princ (strcat &quot;\nfun1 lst1 : &quot; (vl-prin1-to-string lst1))) ; выводим то что по ссылке в lst1 (соответственно 1 2 3)
   (fun2 lst1) ;вызываем функцию fun2 передавая в качестве аргумента ссылку на 1 2 3
   (princ (strcat &quot;\nfun1 lst1 : &quot; (vl-prin1-to-string lst1))); выводим то что по ссылке в lst1 (соответственно 1 2 3)
   (princ)
   ) ;_ end of defun

(defun fun2 (lst2) ;ассоциируем имя lst2 с ссылкой на 1 2 3
   (princ (strcat &quot;\nfun2 lst1 : &quot; (vl-prin1-to-string lst1))); выводим то что ассоциированно с lst1 (см. строку 3 - 1 2 3)
   (setq lst2 (mapcar &#039;1+ lst2)); ассоциируем имя lst2 на ссылку на вновь созданный список 2 3 4
   (princ (strcat &quot;\nfun2 lst2 : &quot; (vl-prin1-to-string lst2))); выводим его
   ) ;_ end of defun; возвращаемся в fun1
[/cc]]]></description>
		<content:encoded><![CDATA[<p>SET делает ровно то-же что и SETQ, только принимает аргументы имени в другом формате - setq служит для связывания "жесткого" програмного имени со значением, а set позоляет использовать имена которые могут "придумываются" уже во время выполнения программы (то есть они и их количество может быть различными при различных исходных данных - имена построенны на основе самих данных) - на самом деле это можно сделать и при помощи setq и eval - но это т.н. "синтетический сахар".<br />
Как это работает:</p>
<div class="codecolorer-container lisp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="lisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> fun1 <span style="color: #66cc66;">&#40;</span>/ lst1<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;локальное имя</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setq</span> lst1 '<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #808080; font-style: italic;">; заносим в lst1 ссылку на начало списка 1 2 3</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span>strcat <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun1 lst1 : &quot;</span> <span style="color: #66cc66;">&#40;</span>vl-prin1-to-string lst1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">; выводим то что по ссылке в lst1 (соответственно 1 2 3)</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span>fun2 lst1<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;вызываем функцию fun2 передавая в качестве аргумента ссылку на 1 2 3</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span>strcat <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun1 lst1 : &quot;</span> <span style="color: #66cc66;">&#40;</span>vl-prin1-to-string lst1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #808080; font-style: italic;">; выводим то что по ссылке в lst1 (соответственно 1 2 3)</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;_ end of defun</span><br />
<br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> fun2 <span style="color: #66cc66;">&#40;</span>lst2<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;ассоциируем имя lst2 с ссылкой на 1 2 3</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span>strcat <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun2 lst1 : &quot;</span> <span style="color: #66cc66;">&#40;</span>vl-prin1-to-string lst1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #808080; font-style: italic;">; выводим то что ассоциированно с lst1 (см. строку 3 - 1 2 3)</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setq</span> lst2 <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">mapcar</span> '<span style="color: #cc66cc;">1</span>+ lst2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #808080; font-style: italic;">; ассоциируем имя lst2 на ссылку на вновь созданный список 2 3 4</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span>strcat <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun2 lst2 : &quot;</span> <span style="color: #66cc66;">&#40;</span>vl-prin1-to-string lst2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #808080; font-style: italic;">; выводим его</span><br />
&nbsp; &nbsp;<span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;_ end of defun; возвращаемся в fun1</span></div></td></tr></tbody></table></div>
]]></content:encoded>
	</item>
	<item>
		<title>От: Кулик Алексей aka kpblc</title>
		<link>https://autolisp.ru/2013/01/10/byref/comment-page-1/#comment-37381</link>
		<dc:creator><![CDATA[Кулик Алексей aka kpblc]]></dc:creator>
		<pubDate>Mon, 14 Jan 2013 12:08:48 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=1052#comment-37381</guid>
		<description><![CDATA[Хорошо, что в таком случае вообще делает set? По-моему, если использовать именно терминологию С++, то set - передача по ссылке.
И как тогда объяснить такое поведение кода [cc lang=&quot;cadlisp&quot;](defun fun1 (/ lst1)
  (setq lst1 &#039;(1 2 3))
  (princ (strcat &quot;\nfun1 lst1 : &quot; (vl-prin1-to-string lst1)))
  (fun2 lst1)
  (princ (strcat &quot;\nfun1 lst1 : &quot; (vl-prin1-to-string lst1)))
  (princ)
  ) ;_ end of defun

(defun fun2 (lst2)
  (princ (strcat &quot;\nfun2 lst1 : &quot; (vl-prin1-to-string lst1)))
  (setq lst2 (mapcar &#039;1+ lst2))
  (princ (strcat &quot;\nfun2 lst2 : &quot; (vl-prin1-to-string lst2)))
  ) ;_ end of defun[/cc]
[cc lang=&quot;cadlisp&quot;]_$ (fun1)

fun1 lst1 : (1 2 3)
fun2 lst1 : (1 2 3)
fun2 lst2 : (2 3 4)
fun1 lst1 : (1 2 3)
_$ [/cc]
У меня другого объяснения, кроме как передача по значению, нет.]]></description>
		<content:encoded><![CDATA[<p>Хорошо, что в таком случае вообще делает set? По-моему, если использовать именно терминологию С++, то set - передача по ссылке.<br />
И как тогда объяснить такое поведение кода</p>
<div class="codecolorer-container cadlisp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br /></div></td><td><div class="cadlisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;"><span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> fun1 <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">/</span> lst1<span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setq</span> lst1 '<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">strcat</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun1 lst1 : &quot;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">vl-prin1-to-string</span> lst1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span>fun2 lst1<span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">strcat</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun1 lst1 : &quot;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">vl-prin1-to-string</span> lst1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;_ end of defun</span><br />
<br />
<span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">defun</span> fun2 <span style="color: #66cc66;">&#40;</span>lst2<span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">strcat</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun2 lst1 : &quot;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">vl-prin1-to-string</span> lst1<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">setq</span> lst2 <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">mapcar</span> '<span style="color: #cc66cc;">1</span><span style="color: #66cc66;">+</span> lst2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">princ</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">strcat</span> <span style="color: #ff0000;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>fun2 lst2 : &quot;</span> <span style="color: #66cc66;">&#40;</span><span style="color: #b1b100;">vl-prin1-to-string</span> lst2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><br />
&nbsp; <span style="color: #66cc66;">&#41;</span> <span style="color: #808080; font-style: italic;">;_ end of defun</span></div></td></tr></tbody></table></div>
<div class="codecolorer-container cadlisp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="cadlisp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap;">_$ <span style="color: #66cc66;">&#40;</span>fun1<span style="color: #66cc66;">&#41;</span><br />
<br />
fun1 lst1 : <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><br />
fun2 lst1 : <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><br />
fun2 lst2 : <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span> <span style="color: #cc66cc;">4</span><span style="color: #66cc66;">&#41;</span><br />
fun1 lst1 : <span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span> <span style="color: #cc66cc;">2</span> <span style="color: #cc66cc;">3</span><span style="color: #66cc66;">&#41;</span><br />
_$</div></td></tr></tbody></table></div>
<p>У меня другого объяснения, кроме как передача по значению, нет.</p>
]]></content:encoded>
	</item>
	<item>
		<title>От: Дима_</title>
		<link>https://autolisp.ru/2013/01/10/byref/comment-page-1/#comment-37261</link>
		<dc:creator><![CDATA[Дима_]]></dc:creator>
		<pubDate>Fri, 11 Jan 2013 12:27:55 +0000</pubDate>
		<guid isPermaLink="false">http://autolisp.ru/?p=1052#comment-37261</guid>
		<description><![CDATA[Алексей, Вы меня поражаете, а для чего по Вашему списки немутабельны?? В лиспе, если использовать сишную терминологию, ВСЕ передается ТОЛЬКО по ссылке. В вашем примере с помощью set вы переопределяете ИМЯ хранящиеся в lst2 (то есть &quot;lst1&quot;) вот и все. Что set, что setq ТОЛЬКО переопределяет имя, предоставляя предыдущее значение сборщику - проверяется елементарно - с помошью любого мутабельного объекта (vla или ename)
создаем круг
(setq a (entlast))
(setq b a x b c x xx c) - теперь двигаем круг сколько хотим
(cdr (assoc 10 (entget XXX))) на месте XXX ставте любое из созданных имен - результат будет ВСЕГДА одинаков (переместите и они все одинаково изменятся) - т.е. это все естественно &quot;ссылки&quot; на наш круг а не его копии. 
(setq AAA (cdr (assoc 10 (entget a)))) - вот так будет занесено (сохранено) значение, которое естественно не изменится как-бы мы дальше не крутили кругом. В автолиспе нет &quot;переменных&quot; - есть только имена которые указывают на конкретные значения (ячейки памяти), а когда на &quot;свои&quot; (самосозданные) значения ни указывает ни одна ссылка (то есть оно уже точно никому не нужно) - его на очередном проходе &quot;освобождает&quot; сборщик мусора.]]></description>
		<content:encoded><![CDATA[<p>Алексей, Вы меня поражаете, а для чего по Вашему списки немутабельны?? В лиспе, если использовать сишную терминологию, ВСЕ передается ТОЛЬКО по ссылке. В вашем примере с помощью set вы переопределяете ИМЯ хранящиеся в lst2 (то есть "lst1") вот и все. Что set, что setq ТОЛЬКО переопределяет имя, предоставляя предыдущее значение сборщику - проверяется елементарно - с помошью любого мутабельного объекта (vla или ename)<br />
создаем круг<br />
(setq a (entlast))<br />
(setq b a x b c x xx c) - теперь двигаем круг сколько хотим<br />
(cdr (assoc 10 (entget XXX))) на месте XXX ставте любое из созданных имен - результат будет ВСЕГДА одинаков (переместите и они все одинаково изменятся) - т.е. это все естественно "ссылки" на наш круг а не его копии.<br />
(setq AAA (cdr (assoc 10 (entget a)))) - вот так будет занесено (сохранено) значение, которое естественно не изменится как-бы мы дальше не крутили кругом. В автолиспе нет "переменных" - есть только имена которые указывают на конкретные значения (ячейки памяти), а когда на "свои" (самосозданные) значения ни указывает ни одна ссылка (то есть оно уже точно никому не нужно) - его на очередном проходе "освобождает" сборщик мусора.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
