打印类型和内容到控制台

时间:2014-01-30 10:00:53

标签: scala

如果我评估,请参阅Scala repl:

val lines : String = ("a1 , test1 , test2 , a2 , test3 , test4")
    lines.split(",").grouped(3).toList 

我在保存时收到了这个:

//> res0: List[Array[String]] = List(Array("a1 ", " test1 ", " test2 "), Array("
                                                  //|  a2 ", " test3 ", " test4"))

我希望能够将此信息打印到控制台,res0的值

因此printTypeInformation(lines.split(",").grouped(3).toList)之类的内容将与上面的res0打印相同的值。我想我可以通过迭代List打印值和类型信息来实现上述类型。但是,是否有更通用的方法可以打印任何类型的信息?

2 个答案:

答案 0 :(得分:1)

作为pointed out by @Jatin ,你可以用清单做到这一点:

def manOf[T: Manifest](t: T): Manifest[T] = manifest[T]
val lines : String = ("a1 , test1 , test2 , a2 , test3 , test4")
val xs = lines.split(",").grouped(3).toList
println(manOf(xs))
// scala.collection.immutable.List[Array[java.lang.String]]

答案 1 :(得分:1)

答案接近来自 om-nom-nom 的答案,但从scala 2.10开始,我认为最好使用TypeTags:

scala> "a1 , test1 , test2 , a2 , test3 , test4"
res3: String = a1 , test1 , test2 , a2 , test3 , test4

scala> res3.split(",").grouped(3).toList
res4: List[Array[String]] = List(Array("a1 ", " test1 ", " test2 "), Array(" a2 ", " test3 ", " test4"))

scala> def typped[T: TypeTag](obj: T) = typeOf[T]
typped: [T](obj: T)(implicit evidence$1: reflect.runtime.universe.TypeTag[T])reflect.runtime.universe.Type

scala> typped(res4)
res5: reflect.runtime.universe.Type = scala.List[scala.Array[String]]