Típus (néha - vonás, tulajdonság / viselkedési jellemző , hajlam, az angolból trait ) - absztrakt adattípus , amelyet "egyszerű fogalmi modellként használnak objektum-orientált programok strukturálásához" [1][ adja meg ] . A koncepció az OOP osztályok öröklésre való használata során fellépő konfliktusok miatt jelent meg . Hasonló az interfészekkel és mixinekkel való öröklés során megoldott problémákban , és eltérően csak a -t tartalmazza . A konfliktusok megoldásában is specifikusak – a tulajdonságok nem teszik lehetővé, hogy a módszerek nevei megegyezzenek. A koncepciót eredetileg a Berni Egyetem Structural Software Engineering Groupja dolgozta ki [2] .
Ezek képezik a Rust nyelv alapját, és beépülnek a Scala nyelvbe [3] [4] , amely a Smalltalk nyelv Squeak változatában a 3.9-es verzió óta szerepel, és a Perl 6 -ban vezették be (ahol "szerepeknek" nevezik őket; a Perl esetében 5 - a Moose -ban modulként implementálva ), a C# 8.0 nyelven bevezetve (ahol ezeket alapértelmezett metódusmegvalósításokkal rendelkező interfészeknek nevezik) a Joose JavaScript -keretrendszerében is megvalósul . A tervek között szerepel az is, hogy az ActionScript 3.0 -ba is beépítenek tulajdonságokat . A Ruby modul mixinjei némileg hasonlítanak a tulajdonságokhoz.
Egyes programozási nyelvekben a tulajdonságok olyan típusokra vonatkoznak, amelyek valójában mixinek . Így például a PHP -ben a tulajdonságok nemcsak metódusokat, hanem tulajdonságokat is tartalmazhatnak [ 5] .
Rozsdapélda egy létező, kivonatolást leíró típushoz:
vonás hash { fn hash ( & self ) -> u64 ; }A hash tulajdonság implementálása bizonyos típusokhoz – példák hash módszerekre a megfelelő aláírással:
impl Hash for bool { fn hash ( & self ) -> u64 { if * self { 0 } else { 1 } } } impl Hash i64 -hez { fn hash ( & self ) -> u64 { * én mint u64 } }Adattípusok | |
---|---|
Értelmezhetetlen | |
Numerikus | |
Szöveg | |
Referencia | |
Összetett | |
absztrakt | |
Egyéb | |
Kapcsolódó témák |