scala> Array(1, 2, 3).toString
res1: String = [I@11cf437c
scala> List(1, 2, 3).toString
res2: String = List(1, 2, 3)
scala> Vector(1, 2, 3).toString
res3: String = Vector(1, 2, 3)
逻辑上,人们希望Array(1, 2, 3).toString
返回"Array(1, 2, 3)"
。
更新:在我看来像Array
映射到内置的Java数组类型 - 这是正确的吗?如果是,这是Array.toString
必须表现得像这样的原因吗?
答案 0 :(得分:7)
这是因为Array
是一个Java对象。但是,如果符合您的需要,您可以使用runtime.ScalaRunTime.stringOf
。
scala> runtime.ScalaRunTime.stringOf(Array(1, 2, 3))
res3: String = Array(1, 2, 3)
答案 1 :(得分:2)
scala> List(1,2,3).getClass()
res0: Class[_ <: List[Int]] = class scala.collection.immutable.$colon$colon
scala> Vector(1,2,3).getClass()
res1: Class[_ <: scala.collection.immutable.Vector[Int]] = class scala.collection.immutable.Vector
scala> Array(1,2,3).getClass()
res2: Class[_ <: Array[Int]] = class [I
List
和Vector
是Scala类,因此它们具有良好的表示形式。 Array来自Java并实践Java的丑陋。