私はAkkaとscalaを使用しています。そのため、コードで system.actorOf または context.actorOf を呼び出しています。ただし、特定の機能を追加できるように、アクター作成用に Akka のライブラリをラップしています。そのため、高レベルの抽象化をどちらのコンテキストでも機能させる方法で問題が発生します。システムが使用可能な環境内 (テスト コード内およびアプリのカーネル) で呼び出されるか、アクター内で呼び出されるか (コンテキスト変数にのみアクセスできます)。
これを一緒に平手打ちして作業するのは簡単です。コンテキストとシステムの両方を暗黙的に受け取り、利用可能な方に基づいて ActorRef を返す関数を作成できます。ただし、さらに重複を排除するために、問題が発生しました。
スコープ内 (コンテキストまたはシステム) に自動的にアクセスしたい場所は他にもたくさんあります。たとえば、system.config または context.system.config を呼び出したい場合、その状況に合わせてさらに別のラッパー関数を作成する必要があります。
私はこのようなことをしたいと思います:
appropriate.actorOf(Props[Whatever], name = "breakfast")
そして、適切な関数が利用可能な方 (アクターまたはシステム) を返すので、この 2 つの間の切り替えケースがあるすべての場所でこの関数を使用します。
私が遭遇した問題は、関数から [ActorContext, ActorSystem] を返すと、その型ではactorOfが利用できないというエラーが発生することです。したがって、どちらが返されてもどちらのタイプでも使用できるという事実ではなく、タイプに基づいてチェックしています。
私が試みていることを行う方法はありますか?