2
私はScalaとAkkaを学んでいます。私は私を混乱させる例を見つけました。次のコードサンプルは1つのファイルにあります。特色の範囲
class RestApi(system: ActorSystem, timeout: Timeout) extends RestRoutes {
implicit val requestTimeout = timeout
implicit def executionContext = system.dispatcher
def createBoxOffice = system.actorOf(BoxOffice.props, BoxOffice.name)
}
trait BoxOfficeApi {
import BoxOffice._
def createBoxOffice(): ActorRef
implicit def executionContext: ExecutionContext
implicit def requestTimeout: Timeout
lazy val boxOffice = createBoxOffice()
// Uninteresting methods here
}
私を混乱させる部分がBoxOfficeAPI
トレイトでcreateBoxOffice()
呼び出しです。 BoxOfficeAPI
にはActorRef
を返す関数があることが明確に記載されています。しかし、その機能の実装は、特性への参照を持たないRestApi
クラスにあります。
形質がこの方法にどのようにアクセスすることが可能でしょうか?形質の範囲は何ですか?
あなたは完全に正しいです。私はまたコードサンプルの中で 'RestRoutes'という別の特性を除外しました。この特性は 'BoxOfficeApi'を' RestApi'に結合しました。ここで定義されているメソッドの実装にどのように到達するのです。 これを指摘してくれてありがとう! – RemcoW
@RemcoWよろしくお願いします。 –
でも、別の質問が出てきました。関数 'quuux()'が 'Foo'特性からオーバーライドされていることを定義するには、' override'キーワードを使用しています。これは、私が掲示した例では使用されていません。これはオプションのキーワードですか? – RemcoW