遵守以下代碼爲什麼我不能在Scala中省略this.apply(_)中的「apply」?
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
誰能給我解釋一下這是怎麼回事?
對不起,我沒有推斷出實際的問題,但我明白了你的觀點。你能否進一步解釋? – 2011-12-28 04:21:04
這是一個抽象類型的錯誤。注意,如果你使O型具體化(例如「type O = String」),或者如果你把它變成一個類型參數(例如「trait Example [O]」),那麼非編譯的例子就可以工作。) – extempore 2011-12-29 05:21:23
你碰巧知道問題編號爲這個錯誤? – 2012-01-02 20:41:14