scala(三)函式
1.Scala 中使用 val 語句可以定義函式, def 語句定義方法。
class Test{ def m(x: Int) = x + 3 val f = (x: Int) => x + 3} 2.Scala 方法宣告格式如下: def functionName ([引數列表]) : [return type] 如果你不寫等於號和方法主體,那麼方法會被隱式宣告為抽象(abstract),包含它的型別於是也是一個抽象型別。 3.方法定義 由一個 def 關鍵字開始,緊接著是可選的引數列表,一個冒號 : 和方法的返回型別,一個等於號 = ,最後是方法的主體。 Scala 方法定義格式如下: def functionName ([引數列表]) : [return type] = { function body return [expr](預設最後一行)} } 4.函式 函式預設引數 cala 可以為函式引數指定預設引數值,使用了預設引數,你在呼叫函式的過程中可以不需要傳遞引數,這時函式就會呼叫它的預設引數值,如果傳遞了引數,則傳遞值會取代預設值。例項如下:object Test { def main(args: Array[String]) { println( "返回值 : " + addInt() ); } def addInt( a:Int=5, b:Int=7 ) : Int = { var sum:Int = 0 sum = a + b return sum }} 函式命名引數 般情況下函式呼叫引數,就按照函式定義時的引數順序一個個傳遞。但是我們也可以透過指定函式引數名,並且不需要按照順序向函式傳遞引數,例項如下:object Test { def main(args: Array[String]) { printInt(b=5, a=7); } def printInt( a:Int, b:Int ) = { println("Value of a : " + a ); println("Value of b : " + b ); } } 函式可變引數 Scala 允許你指明函式的最後一個引數可以是重複的,即我們不需要指定函式引數的個數,可以向函式傳入可變長度引數列表。 Scala 透過在引數的型別之後放一個星號來設定可變引數(可重複的引數)。例如: object Test { def main(args: Array[String]) { printStrings("Runoob", "Scala", "Python"); } def printStrings( args:String* ) = { var i : Int = 0; for( arg <- args ){ println("Arg value[" + i + "] = " + arg ); i = i + 1; } }} 遞迴函式 遞迴函式意味著函式可以呼叫它本身。 以上例項使用遞迴函式來計算階乘: object Test { def main(args: Array[String]) { for (i <- 1 to 10) println(i + " 的階乘為: = " + factorial(i) ) } def factorial(n: BigInt): BigInt = { if (n <= 1) 1 else n * factorial(n - 1) }} 匿名函式 箭頭左邊是引數列表,右邊是函式體。使用匿名函式後,我們的程式碼變得更簡潔了。 下面的表示式就定義了一個接受一個Int型別輸入引數的匿名函式: var inc = (x:Int) => x+1 上述定義的匿名函式,其實是下面這種寫法的簡寫: def add2 = new Function1[Int,Int]{ def apply(x:Int):Int = x+1; }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31496956/viewspace-2213142/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Scala與Java差異(三)之函式Java函式
- Scala 的方法與函式函式
- scala語法 - 方法與函式函式
- 學習Scala 方法與函式函式
- Scala(一):函式、流程控制、引數函式
- 關於scala中的主建構函式函式
- 三、函式函式
- scala簡明教程:偏函式、高階函式、Future非同步程式設計、隱式轉換函式非同步程式設計
- Scala(三):類
- 函式學習三函式
- 三角函式函式
- 大資料Scala系列之樣例類_Option_偏函式大資料函式
- 學好Spark/Kafka必須要掌握的Scala技術點(三)高階函式、方法、柯里化、隱式轉換SparkKafka函式
- webgl內建函式--角度和三角函式Web函式
- 前端基礎(三):函式前端函式
- 字串函式學習三字串函式
- 三角函式公式函式公式
- 好程式設計師大資料教程Scala系列之高階函式程式設計師大資料函式
- 二談三角函式函式
- Scala Essentials: 隱式轉換
- 三角函式公式推導函式公式
- 三種方法實現strlen函式函式
- NumPy 基礎 (三) - 數學函式函式
- Golang 基礎之函式使用 (三)Golang函式
- OpenFaaS實戰之三:Java函式Java函式
- Scala——三個容器:List Set Map
- 一門多正規化的程式語言Scala學習收尾-函式的使用函式
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 遞迴、三元表示式、生成式(列表,字典)、匿名函式遞迴函式
- Vue學習(三)生命週期函式Vue函式
- 三角函式之和差角公式函式公式
- Django基礎三之檢視函式Django函式
- python三種屬性管理魔法函式Python函式
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- 好程式設計師大資料教程分享Scala系列之Option_偏函式_String程式設計師大資料函式
- 聊聊JavaScript和Scala的表示式 ExpressionJavaScriptExpress
- Vue-render函式的三個引數Vue函式