如何理解Scala';s方法声明?
我是Scala的新手,在理解这个声明时遇到了麻烦: 以下是来自Akka如何理解Scala';s方法声明?,scala,methods,Scala,Methods,我是Scala的新手,在理解这个声明时遇到了麻烦: 以下是来自AkkaProps对象的声明: def apply[T <: Actor: ClassTag](): Props = __THE_DEFENITION_GOES_HERE__ 其中类TestActor扩展了Actor。我很好奇,仅仅通过泛型类型参数,编译器是如何找到合适的方法防御的。它是如何工作的?在Scala对象中的应用方法有一些特殊的魔力。这: val something = Hello() 这是一种特殊的快捷方式语法:
Props
对象的声明:
def apply[T <: Actor: ClassTag](): Props = __THE_DEFENITION_GOES_HERE__
其中
类TestActor扩展了Actor
。我很好奇,仅仅通过泛型类型
参数,编译器是如何找到合适的方法防御的。它是如何工作的?在Scala对象中的应用
方法有一些特殊的魔力。这:
val something = Hello()
这是一种特殊的快捷方式语法:
val something = Hello.apply()
val props = Props.apply[TestActor]()
类似地,看看您的示例:
val props = Props[TestActor]
这只是一个简短的语法:
val something = Hello.apply()
val props = Props.apply[TestActor]()
[TestActor]
只是为apply
方法填充类型参数。但是ClassTag
在TClassTag
中的意思是在运行时携带有关类的信息。:
定义了ClassTag
上的上下文绑定,这意味着“在隐式范围中有ClassTag[T]的实例”;它是def apply[T@user3663882的语法糖ClassTag
是避免JVM上类型擦除的一种方法。