Scala结构的解释
我正忙于一些遗留Scala/Akka代码的一项重大重构任务,并被一个我无法解释的构造所困扰,这妨碍了我的工作:Scala结构的解释,scala,self-type,Scala,Self Type,我正忙于一些遗留Scala/Akka代码的一项重大重构任务,并被一个我无法解释的构造所困扰,这妨碍了我的工作: trait PerRequestCreator { this: Actor => def perRequest(<some_params>): ActorRef = { body of function } } trait PerRequestCreator{ 这个:Actor=> def perRequest():ActorRef={函数体} } 然后将
trait PerRequestCreator {
this: Actor =>
def perRequest(<some_params>): ActorRef = { body of function }
}
trait PerRequestCreator{
这个:Actor=>
def perRequest():ActorRef={函数体}
}
然后将其用作:
class SomeActor extends PerRequestCreator with Actor {
def processRequest: Route = {
perRequest(<some_params_passed>)
}
}
class SomeActor使用Actor扩展PerRequestCreator{
def processRequest:路由={
perRequest()
}
}
我很难理解这个特性的部分:Actor=>…
。它被称为self type,它表达了PerRequestCreator
被混合到扩展Actor
的东西中的要求
它很有用,因为现在您可以在PerRequestCreator
的定义中使用Actor
中定义的任何内容,并且编译器将检查您是否只能扩展PerRequestCreator
,如果您还扩展Actor
例如:
class SomeClass extends PerRequestCreator // this won't compile
class SomeClass extends PerRequestCreator with Actor // this is ok
您可以在此处阅读更多信息: