Typ (někdy - vlastnost, rys / behaviorální rys , dispozice, z angličtiny trait ) - abstraktní datový typ používaný jako "jednoduchý konceptuální model pro strukturování objektově orientovaných programů" [1][ specifikovat ] . Koncept se objevil kvůli konfliktům při použití tříd v OOP pro dědičnost. Podobné je to v problémech, které řeší při dědění pomocí rozhraní a mixinů a na rozdíl od nich obsahuje pouze . Specifické jsou také ve způsobu řešení konfliktů – vlastnosti neumožňují shodu názvů metod. Tento koncept byl původně vyvinut skupinou Structural Software Engineering Group na univerzitě v Bernu [2] .
Jsou základem jazyka Rust a jsou zabudovány do jazyka Scala [3] [4] , zahrnutého ve variantě Squeak jazyka Smalltalk od verze 3.9, představené v Perlu 6 (kde se jim říká „role“; pro Perl 5 - implementované jako modul v Moose ), představené v jazyce C# 8.0 (kde se nazývají rozhraní s implementací výchozích metod) jsou také implementovány v rámci Joose pro JavaScript . Plánuje se také zahrnutí vlastností do jazyka ActionScript 3.0 . Modulové mixiny v Ruby jsou poněkud podobné vlastnostem.
V některých programovacích jazycích označují vlastnosti typy, které jsou ve skutečnosti mixiny . Takže například v PHP mohou vlastnosti obsahovat nejen metody, ale také vlastnosti [5] .
Příklad rzi pro existující typ popisující hašování:
vlastnost hash { fn hash ( & self ) -> u64 ; }Implementace vlastnosti hash pro některý typ - příklady hash metod s odpovídající signaturou:
impl Hash pro bool { fn hash ( & self ) -> u64 { if * self { 0 } else { 1 } } } impl Hash pro i64 { fn hash ( & self ) -> u64 { * já jako u64 } }Typy dat | |
---|---|
Neinterpretovatelné | |
Numerický | |
Text | |
Odkaz | |
Kompozitní | |
abstraktní | |
jiný | |
související témata |