<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Collections on TrustLang</title>
		<link>https://trust-lang.net/ru/tags/collections/</link>
		<description>Recent content in Collections on TrustLang</description>
		<generator>Hugo</generator>
		<language>ru</language>
		
		
		
		
			<atom:link href="https://trust-lang.net/ru/tags/collections/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Система типов</title>
				<link>https://trust-lang.net/ru/docs/types/concept/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/concept/</guid>
				<description>&lt;h2 id=&#34;принципы&#34;&gt;Принципы&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bf%d1%80%d0%b8%d0%bd%d1%86%d0%b8%d0%bf%d1%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; имеет &lt;strong&gt;закрытую систему типов&lt;/strong&gt;: любой новый тип данных обязательно наследует&#xA;(расширяет) один из уже существующих. Это напоминает модель &lt;code&gt;Object&lt;/code&gt; в Java, но без физического наследования (без боксинга простых типов в объекты).&#xA;Этот подход является основой для &lt;a href=&#34;generics/&#34;&gt;обобщённого программирования&lt;/a&gt;, когда производный тип наследует набор операций «родительского» типа,&#xA;и продолжает работать со всеми его наследниками.&lt;/p&gt;&#xA;&lt;p&gt;Язык динамически типизирован: тип переменной можно указать явно или оставить автоматический вывод.&#xA;Указанный тип используется для проверок совместимости при присваивании, для проверки типа&#xA;возвращаемого значения функции и для управления размещением в памяти &lt;a href=&#34;https://trust-lang.net/ru/docs/types/native/&#34;&gt;нативных типов&lt;/a&gt;.&#xA;Автоматическое приведение возможно только между совместимыми типами; в остальных случаях требуется&#xA;явное &lt;a href=&#34;type_system/&#34;&gt;преобразование типов&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Словари и наборы (перечисления)</title>
				<link>https://trust-lang.net/ru/docs/types/dicts/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/dicts/</guid>
				<description>&lt;p&gt;Действующие примеры с фактическим поведением текущей версии можно запустить в песочнице:&#xA;&lt;a href=&#34;https://trust-lang.net/ru/playground/?file=dict&#34;&gt;словарь&lt;/a&gt;, &lt;a href=&#34;https://trust-lang.net/ru/playground/?file=dict_mixed&#34;&gt;словарь со смешанными типами&lt;/a&gt;,&#xA;&lt;a href=&#34;https://trust-lang.net/ru/playground/?file=enum_variant&#34;&gt;перечисление и вариант&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;словарь-dictionary&#34;&gt;Словарь (:Dictionary)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%81%d0%bb%d0%be%d0%b2%d0%b0%d1%80%d1%8c-dictionary&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Словарь — набор данных произвольного типа с доступом к элементам по целочисленному индексу или по&#xA;имени элемента при его наличии (это похоже одновременно и на кортеж, и на структуру). Словарь всегда&#xA;одномерный, но каждый элемент может содержать произвольное количество элементов любого типа, в том&#xA;числе другие словари.&lt;/p&gt;&#xA;&lt;p&gt;Литерал словаря записывается в круглых скобках с обязательной завершающей запятой:&#xA;&lt;code&gt;(,)&lt;/code&gt; — пустой словарь, &lt;code&gt;(1, two=&#39;2&#39;, name=3,)&lt;/code&gt;. Доступ к элементу — по имени через точку от имени&#xA;переменной (&lt;code&gt;d.name&lt;/code&gt;) либо по целочисленному индексу (&lt;code&gt;d[0]&lt;/code&gt;), который начинается с 0 и может быть&#xA;отрицательным (отсчёт от конца). Изменение — оператором &lt;code&gt;[]=&lt;/code&gt;; количество элементов — методом &lt;code&gt;size()&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Классы</title>
				<link>https://trust-lang.net/ru/docs/types/class/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/class/</guid>
				<description>&lt;p&gt;Тип данных &lt;code&gt;:Class&lt;/code&gt; аналогичен словарю, но все его поля обязаны иметь имена (доступ к свойствам по&#xA;индексу также возможен). При создании экземпляра класса создаётся новый тип, копирующий свойства и&#xA;методы всех родителей. В отличие от словаря, состав полей класса определяется на этапе компиляции&#xA;и может только расширяться относительно родительских типов.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Статус:&lt;/strong&gt; реализованы базовые &lt;code&gt;:Struct&lt;/code&gt; (строго POD) и &lt;code&gt;:Class&lt;/code&gt; (наследование), генерируемые в C++&#xA;&lt;code&gt;struct&lt;/code&gt;; полноценное ООП (виртуальные методы/override, конструкторы/деструкторы, статические члены)&#xA;в текущей версии не реализовано. Из «объектно-ориентированных» типов также реализованы перечисления&#xA;&lt;code&gt;:Enum&lt;/code&gt;, варианты &lt;code&gt;:Variant&lt;/code&gt; и кортежи &lt;code&gt;:Tuple&lt;/code&gt; (см. &lt;a href=&#34;https://trust-lang.net/ru/docs/types/dicts/&#34;&gt;Словари и наборы&lt;/a&gt;), а также&#xA;предварительное объявление нативных C++-классов (&lt;code&gt;String ::= %std::string { ... };&lt;/code&gt; — см.&#xA;&lt;a href=&#34;https://trust-lang.net/ru/docs/types/native/&#34;&gt;Нативные типы&lt;/a&gt;) и пользовательские &lt;strong&gt;шаблон-классы&lt;/strong&gt; (&lt;code&gt;&amp;lt;T&amp;gt; :Box ::= :Class{...}&lt;/code&gt; — см.&#xA;&lt;a href=&#34;generics/#class-template&#34;&gt;Обобщённое программирование&lt;/a&gt;). Актуальные границы реализации — в&#xA;&lt;a href=&#34;https://trust-lang.net/ru/docs/status/&#34;&gt;Статусе реализации&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Нативные типы</title>
				<link>https://trust-lang.net/ru/docs/types/native/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/native/</guid>
				<description>&lt;h2 id=&#34;нативные-типы-данных&#34;&gt;Нативные типы данных&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bd%d0%b0%d1%82%d0%b8%d0%b2%d0%bd%d1%8b%d0%b5-%d1%82%d0%b8%d0%bf%d1%8b-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Нативными (машинными) данными могут быть как переменные, так и функции, а имя нативных объектов начинается на символ процента &amp;ldquo;&lt;strong&gt;%&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;В случае переменных, это двоичные данные, которые располагаются в одной неразрывной области машинной памяти&#xA;по определённому адресу и имеют строго определённый формат.&lt;/p&gt;&#xA;&lt;p&gt;Чтобы использовать уже существующие библиотеки, нужно либо импортировать нативный объект,&#xA;тем самым создав объект TrustLang, но с реализацией на другом языке, например на C/C++,&#xA;либо сделать предварительное определение (декларацию) нативного объекта.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Диапазоны, массивы и тензоры</title>
				<link>https://trust-lang.net/ru/docs/types/containers/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/containers/</guid>
				<description>&lt;p&gt;Диапазоны, массивы и (в перспективе) тензоры — контейнерные (коллекционные) типы для работы с&#xA;последовательностями и многомерными данными.&lt;/p&gt;&#xA;&lt;h2 id=&#34;диапазоны-range&#34;&gt;Диапазоны (:Range)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%b4%d0%b8%d0%b0%d0%bf%d0%b0%d0%b7%d0%be%d0%bd%d1%8b-range&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Диапазон — тип, приблизительный аналог «генератора» в Python: он поочерёдно выдает элементы в заданном&#xA;интервале с заданным шагом. В тексте диапазон указывается двумя или тремя элементами через две точки:&#xA;&lt;code&gt;1..5&lt;/code&gt; — от единицы до пяти с шагом по умолчанию 1; шаг задаётся третьим элементом: &lt;code&gt;0..10..2&lt;/code&gt;.&#xA;В качестве границ и шага можно использовать не только литералы, но и переменные, и рациональные&#xA;числа: &lt;code&gt;0.1..$stop..0.1&lt;/code&gt; — от 0.1 до &lt;code&gt;$stop&lt;/code&gt; с шагом 0.1; &lt;code&gt;0..100:Rational&lt;/code&gt; — диапазон рациональных чисел.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
