Обратите внимание на следующий кодПочему я не могу опустить «применить» в 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
Может ли кто-нибудь объяснить мне, что происходит?
Извините, я не могу понять, что представляет собой настоящая проблема, но я вижу вашу точку зрения. Не могли бы вы объяснить дальше? –
Это ошибка с абстрактными типами. Обратите внимание, что пример не компиляции работает, если вы создаете конкретный тип O (например, «тип O = String»), или вместо него вместо него введите параметр типа (например, «trait Example [O]».) – extempore
, вам известно, что номер выпуска для этой ошибки? –