0

我来自长期的 Python 背景。我一直非常依赖typePython 中的函数来吐出我正在使用的对象类型。

例如

In[0]:    print type("Hello")
Out[0]:   >>> string

In[0]:    print type(1234)
Out[0]:   >>> int

当我进入Scala领域时,有时我并不完全确定我最终得到了什么样的对象。print type(obj)每当我有点迷路时,能够快速放下,这将是一个巨大的帮助。

例如

println(type(myObj))  /* Whatever the scala equivalent would be */
>>> myObj: List[String] = List(Hello there, World!)
4

2 回答 2

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
于 2013-07-17T03:43:34.140 回答
0

You can easily access high-fidelity type information using reflection as of Scala 2.10.

Make sure to add the scala-reflect JAR to your classpath beforehand.

A little helper method is useful here:

import scala.reflect.runtime.universe._
def showTypeOf[T: TypeTag](obj: T) {
  println(typeOf[T])
}

Usage:

showTypeOf(List(1, 2, 3)) // prints List[Int]
于 2013-07-17T12:55:13.453 回答