Scala Language
Auto tipos
Buscar..
Sintaxis
- Tipo de rasgo {selfId => / otros miembros pueden referirse a
selfId
en caso de quethis
signifique algo /} - Tipo de rasgo {selfId: OtherType => / * otros miembros pueden usar
selfId
y será del tipoOtherType
* / - Tipo de rasgo {selfId: OtherType1 with OtherType2 => / *
selfId
es de tipoOtherType1
yOtherType2
* /
Observaciones
A menudo se utiliza con el patrón de pastel.
Ejemplo de auto tipo simple
Los auto tipos se pueden usar en rasgos y clases para definir restricciones en las clases concretas a las que se mezcla. También es posible utilizar un identificador diferente para la this
usando esta sintaxis (útil cuando el objeto externo tiene que ser referenciado a partir de un objeto interno).
Supongamos que desea almacenar algunos objetos. Para eso, crea interfaces para el almacenamiento y para agregar valores a un contenedor:
trait Container[+T] {
def add(o: T): Unit
}
trait PermanentStorage[T] {
/* Constraint on self type: it should be Container
* we can refer to that type as `identifier`, usually `this` or `self`
* or the type's name is used. */
identifier: Container[T] =>
def save(o: T): Unit = {
identifier.add(o)
//Do something to persist too.
}
}
De esta manera, no están en la misma jerarquía de objetos, pero PermanentStorage
no se puede implementar sin implementar también Container
.
Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow