observar el siguiente código¿Por qué no puedo omitir "apply" en this.apply (_) en Scala?
trait Example {
type O
def apply(o: O)
def f(o: O) = this.apply(o)
}
el cual compila bien en Scala. Esperaría que puedo omitir apply
como de costumbre, escribiendo def f(o: O) = this(o)
. Sin embargo, esto resulta en el emocionante mensaje de error
type mismatch; found : o.type (with underlying type Example.this.O)
required: _31.O where val _31: Example
possible cause: missing arguments for method or constructor
¿Alguien me puede explicar lo que está pasando?
lo siento, no estoy logrando inferir cuál es el problema real, pero entiendo su punto. ¿Podrías explicar más? –
Es un error con tipos abstractos. Observe que el ejemplo no compilador funciona si el tipo O es concreto (por ejemplo, "escriba O = String") o si lo convierte en un parámetro de tipo en su lugar (por ejemplo, "rasit Example [O]".) – extempore
¿conoce usted el número de problema para este error? –