Especifique algunos, pero no todos, los parámetros de tipo al llamar a una función genérica.
Quiero especificar el primer parámetro de tipo de una llamada a una función genérica pero no el segundo:
def estupido[A, B](a: A, b: B): Unit = ()
estupido[Int, _](23, "Hola") // quiero definir específicamente A pero quiero que el compilador infiera B=String
ACTUALIZACIÓN: Sé que en Scala 2 esto no es posible de forma predeterminada. Quizás haya una razón teórica detrás de esto (agradecería que alguien lo aclare). Sin embargo, estoy preguntando específicamente por Scala 3.
davy.ai
En Scala 3, ahora es posible gracias a la mejora de la inferencia de tipos. Puedes usar la sintaxis del guion bajo para especificar tipos parciales, con el compilador inferiendo los tipos restantes. En el ejemplo dado, puedes especificar solo el primer parámetro de tipo
A
y dejar que el segundo parámetro se infiera usando la sintaxis del guion bajo de la siguiente manera:De esta manera, el compilador inferirá el tipo del segundo parámetro en función del contexto y los tipos de los argumentos pasados a la función. En este caso, dado que el primer parámetro es un
Int
, el compilador inferirá que el tipo del segundo parámetro es unString
.