1.相当于List的泛形是元祖( List [ Tuple [ (K,V),(K,V) ] ] )
2.搭配 :_*
3 :_* 详解
函数内部,重复参数的类型是声明参数类型的数组。
因此, echo 函数里被声明为类型“ String* ”的 args 的类型实际上是 Array[String] 。
然而,如果你有一个合适类型的数组,并尝试把它当作
重复参数传入,你会得到一个编译器错误:
scala> val arr = Array("What's", "up", "doc?")
arr: Array[java.lang.String] = Array(What's, up, doc?)
scala> echo(arr)
<console>:7: error: type mismatch;
found : Array[java.lang.String]
required: String
echo(arr)
要实现这个做法,你需要在数组参数后添加一个冒号和一个 _* 符号,像这样:
scala> echo(arr: _*)
What's
up
doc?
这个标注告诉编译器把 arr 的每个元素当作参数,而不是当作单一的参数传给 echo 。
def sum(args: Int*):Int={
var total:Int=0
for (arg <- args) {
total=total+arg
}
total
}
val s = sum(1 to 5:_*)
4.Scala 和 Java对比
Scala中必须要加 _:*
Java中可以