Scala可變長度參數

可變長度參數

Scala 容許你指明函數的最後一個參數能夠是重複的。這能夠容許客戶向函數傳入可變長度參數列表。想要標註一個重複參數,在參數的類型以後放一個星號。例如:java

scala> def echo(args: String*) =
for (arg <- args) println(arg)
echo: (String*)Unit

這樣定義, echo 能夠被零個至多個 String 參數調用:數組

scala> echo()
scala> echo("one")
one
scala> echo("hello", "world!")
hello
world!

函數內部,重複參數的類型是聲明參數類型的數組。所以, 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)
ˆ

要實現這個作法,你須要在數組參數後添加一個冒號和一個 _* 符號,像這樣:ui

scala> echo(arr: _*)
What's
up
doc?

這個標註告訴編譯器把 arr 的每一個元素看成參數,而不是看成單一的參數傳給 echo 。scala

相關文章
相關標籤/搜索