<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[QUIK -> DDE &mdash; Особенности Lua 5.4]]></title>
	<link rel="self" href="https://quik2dde.ru/extern.php?action=feed&amp;tid=374&amp;type=atom" />
	<updated>2022-08-15T12:29:22Z</updated>
	<generator>PunBB</generator>
	<id>https://quik2dde.ru/viewtopic.php?id=374</id>
		<entry>
			<title type="html"><![CDATA[Re: Особенности Lua 5.4]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3536#p3536" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>s_mike пишет:</cite><blockquote><p>&lt;const&gt; и &lt;clear&gt;</p></blockquote></div><p>Ух ты! Почитал - прикольно.</p><div class="quotebox"><cite>s_mike пишет:</cite><blockquote><p>Другая логика сборщика мусора</p></blockquote></div><p>Это я отношу к внутренним потрошкам, которые по идее программиста заботить на должны (на мой взгляд). Лишь бы сборщик работал <img src="https://quik2dde.ru/img/smilies/smile.png" width="15" height="15" alt="smile" /> Это лишь мое мнение.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-08-15T12:29:22Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3536#p3536</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Особенности Lua 5.4]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3535#p3535" />
			<content type="html"><![CDATA[<p>&lt;const&gt; и &lt;clear&gt;<br />Другая логика сборщика мусора<br />новые метаметоды (не знаю, может, они в еще 5.3 появились)</p>]]></content>
			<author>
				<name><![CDATA[s_mike]]></name>
				<uri>https://quik2dde.ru/profile.php?id=120</uri>
			</author>
			<updated>2022-08-15T10:49:07Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3535#p3535</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Особенности Lua 5.4]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3496#p3496" />
			<content type="html"><![CDATA[<p>Напишите кто еще какие изменения заметил, будут добавлять всё в первый пост темы.</p>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-07-13T08:47:14Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3496#p3496</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Особенности Lua 5.4]]></title>
			<link rel="alternate" href="https://quik2dde.ru/viewtopic.php?pid=3495#p3495" />
			<content type="html"><![CDATA[<p>В Lua версии 5.4 появились некоторые отличия от Lua 5.1 и 5.2.<br />В этой теме предлагаю собрать все неожиданные изменения синтаксиса / функций. Речь именно про особенности Lua-интерпретатора, не связанных с версиями терминала QUIK.</p><p>1. В Lua 5.3 появились [url=https://quik2dde.ru/viewtopic.php?id=370]встроенные битовые операции[/url], заменяющие библиотеку bit.</p><p>2. unpack() --&gt; table.unpack() (неожиданно, Lua 5.4)</p><p>3. Константные локальные переменные &lt;const&gt; (Lua 5.4)<br />Атрибут доступен только для локальных переменных.<br /></p><div class="codebox"><pre><code>local a &lt;const&gt; = 5
a = 8  -- здесь будет ошибка &quot;attempt to assign to const variable &#039;a&#039;&quot;</code></pre></div><p>4. Автоматически &quot;закрываемые&quot; переменные (<em>To-be-closed Variables</em>) (Lua 5.4)<br />При объявлении переменной с атрибутом&nbsp; &lt;close&gt; после покидании блока, где она объявлена, для неё будет автоматически вызван метаметод __close. Причем вызовется он как при нормальном ходе программы, так и при ошибке. Т.е. мы получили этакие штатные &quot;деструкторы&quot;.<br /></p><div class="codebox"><pre><code>function f()
    local t &lt;close&gt; = setmetatable({ 1, 2, 3 }, {
        __close = function(x)
                    print(&quot;__close&quot;)
                  end
    })
end

print(1)
f()
print(2)</code></pre></div><p>Напечатает:<br /></p><div class="codebox"><pre><code>1
__close
2</code></pre></div><p>В качестве параметра в __close передается значение таблицы.</p><p>Если метаметода __close нет, то будет выдана ошибка:<br /></p><div class="codebox"><pre><code>local r &lt;close&gt; = {} -- variable &#039;r&#039; got a non-closable value</code></pre></div>]]></content>
			<author>
				<name><![CDATA[swerg]]></name>
				<uri>https://quik2dde.ru/profile.php?id=78</uri>
			</author>
			<updated>2022-07-13T08:46:08Z</updated>
			<id>https://quik2dde.ru/viewtopic.php?pid=3495#p3495</id>
		</entry>
</feed>
