Quando si gioca con i tipi di metodo dipendenti della Scala, ho incontrato un conflitto con i parametri del metodo di default:Dipendente tipi di metodo conflitto con argomenti di default
abstract class X {
type Y
case class YY(y: Y)
}
object XX extends X {
type Y = String
}
trait SomeTrait {
def method(x: X)(y: x.YY, default: Int = 3): Unit
}
object SomeObject extends SomeTrait {
def method(x: X)(y: x.YY, default: Int): Unit = {}
method(XX)(XX.YY("abc")) // fails to compile
}
Il messaggio è:
[error] found : me.alexbool.XX.YY
[error] required: x$1.YY
[error] Error occurred in an application involving default arguments.
[error] method(XX)(XX.YY("abc")) // fails to compile
Se rimuovo l'argomento con il valore predefinito dalla definizione e implementazione del metodo, l'esempio viene compilato correttamente. Che cosa sto facendo di sbagliato? E 'un errore?
P.S. Sto usando Scala 2.11.4
Sembra un insetto per me. –