Scala可變參數(shù)列表,命名參數(shù)和參數(shù)缺省詳解
重復(fù)參數(shù) Scala在定義函數(shù)時允許指定最后一個參數(shù)可以重復(fù)(變長參數(shù)),從而允許函數(shù)調(diào)用者使用變長參數(shù)列表來調(diào)用該函數(shù),Scala中使用“*”來指明該參數(shù)為重復(fù)參數(shù)。例如:
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
在函數(shù)內(nèi)部,變長參數(shù)的類型,實際為一數(shù)組,比如上例的String * 類型實際為 Array[String]。 然而,如今你試圖直接傳入一個數(shù)組類型的參數(shù)給這個參數(shù),編譯器會報錯:
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編譯器在傳遞參數(shù)時逐個傳入數(shù)組的每個元素,而不是數(shù)組整體。
scala> echo (arr: _*) What's up doc?
命名參數(shù) 通常情況下,調(diào)用函數(shù)時,參數(shù)傳入和函數(shù)定義時參數(shù)列表一一對應(yīng)。
scala> def speed(distance: Float, time:Float) :Float = distance/time speed: (distance: Float, time: Float)Float scala> speed(100,10) res0: Float = 10.0
使用命名參數(shù)允許你使用任意順序傳入?yún)?shù),比如下面的調(diào)用:
scala> speed( time=10,distance=100) res1: Float = 10.0 scala> speed(distance=100,time=10) res2: Float = 10.0
缺省參數(shù)值 Scala在定義函數(shù)時,允許指定參數(shù)的缺省值,從而允許在調(diào)用函數(shù)時不指明該參數(shù),此時該參數(shù)使用缺省值。缺省參數(shù)通常配合命名參數(shù)使用,例如:
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
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud gateway+zookeeper實現(xiàn)網(wǎng)關(guān)路由的詳細搭建
這篇文章主要介紹了SpringCloud gateway+zookeeper實現(xiàn)網(wǎng)關(guān)路由,本文通過圖文實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08Java實現(xiàn)跳轉(zhuǎn)到指定頁面的方法小結(jié)
在Java中,實現(xiàn)頁面跳轉(zhuǎn)主要涉及到Web開發(fā),而這通常通過使用Java的Web框架(如Servlet、Spring MVC)來完成,下面講解一下如何在不同的Java Web框架中實現(xiàn)頁面跳轉(zhuǎn),文中有詳細的代碼示例供大家參考,需要的朋友可以參考下2024-05-05struts2與cookie 實現(xiàn)自動登錄和驗證碼驗證實現(xiàn)代碼
這篇文章主要介紹了struts2與cookie 實現(xiàn)自動登錄和驗證碼驗證實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2016-10-10SpringBoot接受前臺參數(shù)的6種方式以及統(tǒng)一響應(yīng)代碼示例
這篇文章主要給大家介紹了關(guān)于SpringBoot接受前臺參數(shù)的6種方式以及統(tǒng)一響應(yīng)的相關(guān)資料,前端負責(zé)展示頁面和用戶交互,而后端則負責(zé)處理業(yè)務(wù)邏輯和數(shù)據(jù)存儲,在這種架構(gòu)下前端需要將用戶輸入的數(shù)據(jù)發(fā)送給后端進行處理,需要的朋友可以參考下2023-12-12java基本教程之synchronized關(guān)鍵字 java多線程教程
這篇文章主要介紹了java的synchronized原理、synchronized基本規(guī)則、synchronized方法 和 synchronized代碼塊、實例鎖和全局鎖2014-01-01Java中使用Preferences 的 API設(shè)置用戶偏好
這篇文章主要介紹了Java中使用Preferences 的 API設(shè)置用戶偏好的方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-09-09