Почему я не могу опустить слово« применить »в this.apply (_) в Scala?

Обратите внимание на следующий код

trait Example {
  type O
  def apply(o: O)
  def f(o: O) = this.apply(o)
}

, который отлично компилируется в Scala. Я ожидал, что могу пропустить apply как обычно, пишем def f (o: O) = this (o) . Однако это приводит к захватывающему сообщению об ошибке

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

Кто-нибудь может мне объяснить, что происходит?

6
задан Scott Morrison 24 December 2011 в 20:31
поделиться