はScalaで微細コンパイル次のコードScalaのthis.apply(_)で「apply」を省略できないのはなぜですか?
trait Example {
type O
def apply(o: O)
def f(o: O) = this.apply(o)
}
を観察します。私はいつものように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 =文字列")か、タイプパラメータ(例えば "特性例[O]")にした場合に機能することに注意してください。 – extempore
このバグの番号を発行しますか? –