Что делает API отражения Scala Type.dealias? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть простой код,

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 перед использованием типа

1 Ответ

0 голосов
/ 03 июля 2018

Псевдонимы типа выглядят как

type Alias = Person

Он объявляет новый тип Alias, который совпадает с Person.

dealias разрешает эти псевдонимы, так что typeOf[Alias].dealias вернет typeOf[Person]. Поскольку Person не является псевдонимом, typeOf[Person].dealias ничего не делает.

Также обратите внимание:

Тип равенства можно проверить с помощью =: =. Важно отметить, что == не следует использовать для сравнения типов на равенство - == не может проверить равенство типов при наличии псевдонимов типов, а =: = can.

...