Scala 新手...我很困惑
object myApp extends App {
println("Echo" + (args mkString " "))
}
"args"是 Array[String] 类型,但是在 scaladoc 中,Array 没有这样的方法。 mkString 是 Vector 的一种方法,但我没有看到两者之间有任何继承联系。那么为什么我们可以在 args 上使用 mkString 方法呢?
最佳答案
我不是 Scala 专家(远非如此!)但我认为答案是隐式转换(参见 scala.Predef
)和 WrappedArray.scala。
特别是,Predef 具有以下隐式转换:
implicit def genericWrapArray [T] (xs: Array[T]): WrappedArray[T]
WrappedArray 有一个 mkString 方法。当 scala 无法在 Array 上找到 mkString 方法时,它会寻找到一个类型的隐式转换。
http://www.scala-lang.org/api/current/scala/Predef $.html
http://www.scala-lang.org/api/current/scala/collection/mutable/WrappedArray.html
关于arrays - Scala 数组与向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6131309/