Типаж (англ. trait) — абстрактный тип данных, используемый как «простая концептуальная модель для структурирования объектно ориентированных программ»[1][уточнить]. Типажи подобны примесям, но могут содержать только методы. Также отличается способ разрешения конфликтов — типажи не допускают совпадения названий методов.[2]
Типажи являются основой языка Rust и встроены в язык Scala[3] [4], в PHP начиная с версии 5.4, в вариант Squeak языка Smalltalk с версии 3.9, в Perl 6 (где они называются «роли»), для Perl 5 — реализованы как модуль в Moose, также реализованы во фреймворке Joose для JavaScript. Также планируется включение типажей в ActionScript 3.0. Модульные примеси (module mixins) в Ruby в некоторой степени похож на типажи.
В некоторых языках программирования типажами называют типы, которые на самом деле являются примесями. Так, например, в PHP типажи могут содержать не только методы, но и свойства.[5]
Типажи первоначально были разработаны в группе структурного проектирования программного обеспечения Бернского университета[6].
Пример на Rust для существующего типа, описывающего хеширование:
trait Hash {
fn hash(&self) -> u64;
}
Реализация типажа Hash для какого-либо типа – примеры методов hash с соответствующей сигнатурой:
impl Hash for bool {
fn hash(&self) -> u64 {
if *self { 0 } else { 1 }
}
}
impl Hash for i64 {
fn hash(&self) -> u64 {
*self as u64
}
}
Для улучшения этой статьи желательно: |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .