Типаж (абстрактный тип)
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 8 октября 2020 года; проверки требуют 11 правок.
Типаж (иногда — трейт, черта/особенность поведения, нрав, от
методы. Также специфичны способом разрешения конфликтов — типажи не допускают совпадения названий методов. Первоначально концепция разработана в группе структурного проектирования программного обеспечения Бернского университета[2]
.
Являются основой языка
Perl 6 (где они называются «роли»; для Perl 5 — реализованы как модуль в Moose), введены в язык C# 8.0 (где они называются интерфейсы с реализацией методов по умолчанию), также реализованы во фреймворке Joose для JavaScript. Также планируется включение типажей в ActionScript 3.0. Модульные примеси (module mixins) в Ruby
в некоторой степени похож на типажи.
В некоторых языках программирования типажами называют типы, которые на самом деле являются
свойства с константами(начиная с PHP 8.2)[5]
.
Пример на 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
}
}
Примечания
- ↑ Источник . Дата обращения: 4 августа 2009. Архивировано 9 августа 2017 года.
- ↑ SCG: SCG Bibliography . Дата обращения: 4 августа 2009. Архивировано 4 мая 2009 года.
- ↑ http://www.scala-lang.org/node/126 Архивная копия от 27 сентября 2009 на Wayback Machine A Tour of Scala: Traits
- ↑ http://www.ibm.com/developerworks/java/library/j-scala04298.html Архивная копия от 26 августа 2009 на Wayback Machine The busy Java developer’s guide to Scala: Of traits and behaviors
- ↑ PHP: Трейты - Manual . php.net. Дата обращения: 15 марта 2017. Архивировано 14 марта 2017 года.
Ссылки
Для улучшения этой статьи по информационным технологиям желательно:
|