Scala Language
Typy własne
Szukaj…
Składnia
- trait Type {selfId => / inni członkowie mogą odnosić się do
selfId
na wypadek, gdybythis
coś oznaczało /} - cecha Type {selfId: OtherType => / * inni członkowie mogą korzystać z
selfId
i będzie to typOtherType
* / - cecha Type {selfId: OtherType1 with OtherType2 => / *
selfId
jest typuOtherType1
iOtherType2
* /
Uwagi
Często używany z wzorem ciasta.
Prosty przykład typu własnego
Typy własne mogą być używane w cechach i klasach do definiowania ograniczeń konkretnych klas, z którymi jest mieszany. Jest również możliwe zastosowanie innego identyfikatora dla this
za pomocą tego składni (przydatna, gdy zewnętrzny obiekt musi być określany z wewnętrznej obiektu).
Załóżmy, że chcesz przechowywać niektóre obiekty. W tym celu tworzysz interfejsy dla magazynu i dodajesz wartości do kontenera:
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.
}
}
W ten sposób nie są one w tej samej hierarchii obiektów, ale PermanentStorage
nie może zostać zaimplementowany bez implementacji Container
.
Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow