Scala可變長度參數


可變長度參數

Scala 允許你指明函數的最后一個參數可以是重復的。這可以允許客戶向函數傳入可變長度參數列表。想要標注一個重復參數,在參數的類型之后放一個星號。例如:

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)
ˆ

要實現這個做法,你需要在數組參數后添加一個冒號和一個 _* 符號,像這樣:

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

這個標注告訴編譯器把 arr 的每個元素當作參數,而不是當作單一的參數傳給 echo 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM