我来自很长时间的Python背景。我总是倾向于使用Python中的type
函数来吐出我正在使用的对象。
e.g。
In[0]: print type("Hello")
Out[0]: >>> string
In[0]: print type(1234)
Out[0]: >>> int
当我进入Scala
领域时,有时候我不完全确定我最终会遇到什么样的物体。每当我有点失落时能够快速放下print type(obj)
将是一个巨大的帮助。
e.g。
println(type(myObj)) /* Whatever the scala equivalent would be */
>>> myObj: List[String] = List(Hello there, World!)
答案 0 :(得分:1)
Scala等效于java.lang.Object上的getClass方法(来自Java)。
例如:
scala> 1.getClass
res0: Class[Int] = int
scala> Nil.getClass
res1: Class[_ <: scala.collection.immutable.Nil.type] = class scala.collection.immutable.Nil$
scala> "hello".getClass
res2: Class[_ <: String] = class java.lang.String
答案 1 :(得分:0)
从Scala 2.10起,您可以使用反射轻松访问高保真类型信息。
请务必事先将scala-reflect JAR添加到类路径中。
这里有一个小帮手方法:
import scala.reflect.runtime.universe._
def showTypeOf[T: TypeTag](obj: T) {
println(typeOf[T])
}
用法:
showTypeOf(List(1, 2, 3)) // prints List[Int]