有没有办法从脚本中打印出一个会出现在REPL中的对象? (例如myList:List [String] = List(Hello there,World!)

时间:2013-07-17 03:32:58

标签: scala

我来自很长时间的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!)

2 个答案:

答案 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]