无法理解`Array [Any]`上的`mkString`的Scala代码片段

Tom*_*omG 1 oop functional-programming scala

我是一个探索scala的初学者.以下是Scala函数.

def printArray[K](array:Array[K]) = array.mkString("Array(" , ", " , ")") 

val array2 = Array("a", 2, true)  
printArray(array2) 
Run Code Online (Sandbox Code Playgroud)

输出是Array(a,2,true)

我的怀疑 在这里我们给出了数组类型为K. K意味着什么?这是什么意思吗?fucntion'mkString'如何能够将输出作为数组(a,2,true).基本上我不理解连接部分.

感谢您的帮助.

And*_*kin 5

mkString方法称为

arr.mkString(prefix, separator, suffix)
Run Code Online (Sandbox Code Playgroud)

将调用toString所有数组元素,前置prefix,然后连接所有将它们分隔开的字符串separator,最后附加suffix.

类型参数Kin printArray[K]被忽略,它可以被存在主义替换.这只是一个名称不好,签名混乱的方法.

当您将任何原始数据类型(如Int)与扩展AnyRef(类似String)的类型一起存储到同一个数组中时,推断最小上限为Any,因此在

printArray(array2) 
Run Code Online (Sandbox Code Playgroud)

K被设置为Any,将mkString上述作品,胶合在一起

Array(          prefix
a               "a".toString
,               separator
2               2.toString
,               separator
true            true.toString
)               suffix
Run Code Online (Sandbox Code Playgroud)

产生字符串Array(a,2,true).