2

自己型エイリアス名が拡張クラス フィールドを「オーバーライド」し、コンパイラがそれを示さない場合に問題が発生しました。

akka アクターを使用した私のシナリオ:

class MyActor extends Actor { self: SomeModuleInjection =>
  ...
  someActorRef ! SomeMessage
  ...
}

selfエイリアス名を使用する場合。MyActorから他のアクターにメッセージを送信すると、送信者は になりdeadLettersます。代わりに別のエイリアスを使用すると、self正常に動作します。

!メソッドは暗黙的に Actor クラスの self フィールドを取得する必要があると思いますが、エイリアスによって隠されていますself

私の意見では、クラスを拡張する場合に自己型エイリアス名を使用するのは危険です。

私の質問: なぜコンパイラは重複したエイリアス/フィールド名について通知しないのですか? または、この問題をどのように処理しますか?

4

0 に答える 0