4
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ように振る舞わなければならない理由ですか?

4

2 に答える 2

7

ArrayJavaオブジェクトだからです。ただしruntime.ScalaRunTime.stringOf、必要に応じて使用できます。

scala> runtime.ScalaRunTime.stringOf(Array(1, 2, 3))
res3: String = Array(1, 2, 3)
于 2013-09-11T15:41:39.813 に答える
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およびVectorScala クラスであるため、適切に表現されています。Array は Java に由来し、Java の醜さを実践しています。

于 2013-09-11T15:42:26.760 に答える