日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala可变参数列表,命名参数和参数缺省

發布時間:2024/1/23 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala可变参数列表,命名参数和参数缺省 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

重復參數 Scala在定義函數時允許指定最后一個參數可以重復(變長參數),從而允許函數調用者使用變長參數列表來調用該函數,Scala中使用“*”來指明該參數為重復參數。例如:

1 2 3 4 5 6 7 8 9 10 11 12 scala> def echo (args: String *) = ?????|?? for (arg <- args) println(arg) echo: (args: String*)Unit scala> echo() scala> echo ("One") One scala> echo ("Hello","World") Hello World

在函數內部,變長參數的類型,實際為一數組,比如上例的String * 類型實際為 Array[String]。 然而,如今你試圖直接傳入一個數組類型的參數給這個參數,編譯器會報錯:

1 2 3 4 5 6 7 8 9 scala> val arr= Array("What's","up","doc?") arr: Array[String] = Array(What's, up, doc?) scala> echo (arr) <console>:10: error: type mismatch; ?found?? : Array[String] ?required: String ??????????????echo (arr) ????????????????????^

為了避免這種情況,你可以通過在變量后面添加 _*來解決,這個符號告訴Scala編譯器在傳遞參數時逐個傳入數組的每個元素,而不是數組整體。

1 2 3 4 scala> echo (arr: _*) What's up doc?

命名參數 通常情況下,調用函數時,參數傳入和函數定義時參數列表一一對應。

1 2 3 4 5 scala> def? speed(distance: Float, time:Float) :Float = distance/time speed: (distance: Float, time: Float)Float scala> speed(100,10) res0: Float = 10.0

使用命名參數允許你使用任意順序傳入參數,比如下面的調用:

1 2 3 4 5 scala> speed( time=10,distance=100) res1: Float = 10.0 scala> speed(distance=100,time=10) res2: Float = 10.0

缺省參數值 Scala在定義函數時,允許指定參數的缺省值,從而允許在調用函數時不指明該參數,此時該參數使用缺省值。缺省參數通常配合命名參數使用,例如:

1 2 3 4 5 6 7 8 9 10 scala> def printTime(out:java.io.PrintStream = Console.out, divisor:Int =1 ) = ?????| out.println("time = " + System.currentTimeMillis()/divisor) printTime: (out: java.io.PrintStream, divisor: Int)Unit scala> printTime() time = 1383220409463 scala> printTime(divisor=1000) time = 1383220422

總結

以上是生活随笔為你收集整理的Scala可变参数列表,命名参数和参数缺省的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。