Equivalencia desde Kotlin
Genéricos y varianza
CercanaEn Scala 3, parámetros +T y -T declarados en el tipo expresa la responsabilidad del fixture: Source<T> produce valores y Sink<T> los consume sin mezclar ambas responsabilidades.
Referencia Kotlin: Source<out T> es covariante y Sink<in T> es contravariante.
- Mecanismo
- parámetros
+Ty-Tdeclarados en el tipo - Riesgo de diseño
- Copiar la sintaxis de Kotlin en vez de usar parámetros
+Ty-Tdeclarados en el tipo.
- Recomendación
- Expón el contrato del fixture y usa parámetros
+Ty-Tdeclarados en el tipo solo para la garantía que realmente ofrece.
Diferencias relevantes
- La varianza puede declararse, proyectarse en el uso o no tener una noción de subtipado equivalente.
- La forma idiomática de Scala 3 debe conservarse aunque la sintaxis difiera de Kotlin.
Source<T> produce valores y Sink<T> los consume sin mezclar ambas responsabilidades.
trait Source[+T]:
def get: T
trait Sink[-T]:
def put(value: T): Unit