<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Oop on TrustLang</title>
		<link>https://trust-lang.net/ru/tags/oop/</link>
		<description>Recent content in Oop on TrustLang</description>
		<generator>Hugo</generator>
		<language>ru</language>
		
		
		
		
			<atom:link href="https://trust-lang.net/ru/tags/oop/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>
	</channel>
</rss>
