Tipo (a veces - rasgo, rasgo / rasgo de comportamiento , disposición, del rasgo inglés ) - tipo de datos abstractos utilizado como "un modelo conceptual simple para estructurar programas orientados a objetos " [1][ especificar ] . El concepto apareció debido a conflictos al usar clases en OOP para herencia. Es similar en los problemas que resuelve al heredar con interfaces y mixins y, a diferencia del cual, solo contiene . También son específicos en la forma en que resuelven los conflictos: los rasgos no permiten que los nombres de los métodos coincidan. El concepto fue desarrollado originalmente por el Grupo de Ingeniería de Software Estructural de la Universidad de Berna [2] .
Son la base del lenguaje Rust y están integrados en el lenguaje Scala [3] [4] , incluido en la variante Squeak del lenguaje Smalltalk desde la versión 3.9, introducida en Perl 6 (donde se denominan "roles"; para Perl 5 - implementado como un módulo en Moose ), introducido en el lenguaje C# 8.0 (donde se les llama interfaces con implementaciones de métodos predeterminados) también se implementan en el marco Joose para JavaScript . También hay planes para incluir características en ActionScript 3.0 . Los mixins de módulos en Ruby son algo similares a los rasgos.
En algunos lenguajes de programación, los rasgos se refieren a tipos que en realidad son mixins . Entonces, por ejemplo, en PHP , los rasgos pueden contener no solo métodos, sino también propiedades [5] .
Ejemplo de Rust para un tipo existente que describe hash:
hash de rasgos { fn hash ( y uno mismo ) -> u64 ; }Implementación del rasgo Hash para algún tipo - ejemplos de métodos hash con la firma correspondiente:
impl Hash para bool { fn hash ( y uno mismo ) -> u64 { if * self { 0 } else { 1 } } } hash impl para i64 { fn hash ( y uno mismo ) -> u64 { * auto como u64 } }Tipos de datos | |
---|---|
Ininterpretable | |
Numérico | |
Texto | |
Referencia | |
Compuesto | |
resumen |
|
Otro | |
Temas relacionados |