Scala / Akka语法
发布时间:2020-12-16 18:21:11 所属栏目:安全 来源:网络整理
导读:我是 Scala和Akka的新手,并且一直关注 this教程.我遇到了以下内容,并想知道这个语法到底意味着什么? import akka.actor.Propsval props1 = Props[MyActor] //Not sure what this means???val props2 = Props(new ActorWithArgs("arg")) // careful,see belo
我是
Scala和Akka的新手,并且一直关注
this教程.我遇到了以下内容,并想知道这个语法到底意味着什么?
import akka.actor.Props val props1 = Props[MyActor] //Not sure what this means??? val props2 = Props(new ActorWithArgs("arg")) // careful,see below val props3 = Props(classOf[ActorWithArgs],"arg") 我不确定该行评论了什么//不确定这意味着什么?它似乎是一个通用的特性,它提供了参数化类型.如果我查看source code,akka.actor.Props被定义为扩展trait AbstractProps的Object.但是,AbstractProps没有使用类型参数定义,即AbstractProps [T].有人可以解释一下这条线是如何工作的,它的作用是什么? 解决方法
在Scala中,任何实现apply方法的对象都可以在没有new关键字的情况下调用,只需调用MyObject(),它将自动查找它的apply.
如果您查看companion object的companion object,您将看到定义了以下方法: /** * Scala API: Returns a Props that has default values except for "creator" * which will be a function that creates an instance * of the supplied type using the default constructor. */ def apply[T <: Actor: ClassTag](): Props = apply(defaultDeploy,implicitly[ClassTag[T]].runtimeClass,List.empty) 此apply需要一个类型参数而没有参数. T<:Actor意味着你传递的类型T必须扩展Actor.这就是Scala知道如何创建对象的方式. 此外,在Scala中使用arity-0的任何方法都可能会删除它的括号.这就是你看到Props [MyActor]实际编译的方式,因为它相当于Props [MyActor](),相当于Props.apply [MyActor](). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |