gpt4 book ai didi

scala - 如何显示所有类型的对象(Scala中)的?

转载 作者:行者123 更新时间:2023-12-04 14:48:07 26 4
gpt4 key购买 nike

isInstanceOf方法中,可以检查对象的类型。例如:

scala> val i: Int = 5
i: Int = 5

scala> val a: Any = i
a: Any = 5

scala> a.isInstanceOf[Any]
res0: Boolean = true

scala> a.isInstanceOf[Int]
res1: Boolean = true

scala> a.isInstanceOf[String]
res2: Boolean = false

如何显示所有类型的对象(如果可能的话?)?

最佳答案

您可以在2.10做到这一点很容易地(M4或更高版本):

import scala.reflect.runtime.universe._

def superTypes(t: Type): Set[Type] =
(t.parents ++ t.parents.flatMap(superTypes)).toSet

def allTypes[A](a: A)(implicit tag: TypeTag[A]) = superTypes(tag.tpe) + tag.tpe

这给了我们如下:
scala> allTypes(1).foreach(println)
AnyVal
Any
NotNull
Int

scala> allTypes("1").foreach(println)
String
Any
Object
Comparable[String]
CharSequence
java.io.Serializable

scala> allTypes(List("1")).foreach(println)
scala.collection.LinearSeq[String]
scala.collection.GenSeq[String]
scala.collection.IterableLike[String,List[String]]
scala.collection.GenIterable[String]
scala.collection.GenTraversableLike[String,Iterable[String]]
...

你就会有一个更难的时间试图做这样的预2.10东西。

关于scala - 如何显示所有类型的对象(Scala中)的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11248694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com