我有一个简单的代码,

case class Person(name: String, age:Int)
import scala.reflect.runtime.universe._
val t1 = typeOf[Person]
val t2 = t1.dealias
println(t1 == t2)


它输出为true,所以我想问一下Type.dealias的用途是什么?我什么时候应该使用它?一些代码示例会有所帮助

我之所以这样问是因为,当我阅读火花代码ScalaReflection时,在使用类型之前几乎总是使用dealias

最佳答案

类型别名看起来像

type Alias = Person


它声明与Alias相同的新类型Person

dealias解析这些别名,以便typeOf[Alias].dealias将返回typeOf[Person]。因为Person不是别名,所以typeOf[Person].dealias不执行任何操作。

另请注意:


Type Equality can be checked with =:=. It's important to note that == should not be used to compare types for equality-- == can't check for type equality in the presence of type aliases, while =:= can.

08-18 00:35