В scala следующий код правильно компилируется:
class a {}
class b {}
object Main {
implicit class Conv[f, t](val v: f ⇒ t) extends AnyVal {
def conv = v
}
def main(args: Array[String]) {
val m = (a: a) ⇒ new b
m.conv
}
}
Но по какой-то причине следующее не удается скомпилировать:
class a {}
class b {}
object Main {
type V[f, t] = f ⇒ t
implicit class Conv[f, t](val v: V[f, t]) extends AnyVal {
def conv = v
}
def main(args: Array[String]) {
val m = (a: a) ⇒ new b
m.conv
}
}
со следующим сообщением:
value conv is not a member of a => b
m.conv
Почему это происходит?
РЕДАКТИРОВАТЬ: Да, еще есть ошибка даже при
val m: V[a,b] = new V[a,b] { def apply(a: a) = new b }