來個連接 [ 函數式編程 ]html
在函數式編程裏面,方法是方法,函數是函數,二者不一樣。編程
函數能夠做爲參數傳遞給方法 .數組
package com.msym /** * Created by msym on 2017/7/4. * 函數式編程 */ object Demo { def main(args: Array[String]): Unit = { val res1 = m1(fun1, 10, 20) println(res1) val res2 = m1(fun2, 10, 20) println(res2) } //定義一個方法,接收三個參數:一個函數(僅僅是函數的簽名),另外兩個是Int類型(函數運行須要的參數) def m1(fun : (Int,Int) => Int, x:Int, y:Int) = { //調用函數 fun(x, y) } //定義一個函數fun1 val fun1 = (x:Int, y:Int) => x + y //定義另個函數fun2 val fun2 =(x:Int, y:Int) => x * y val fun3 = (x:Int) => x }
函數式編程理解例子之一 :函數式編程
函數代替了 Java 中的匿名類, 函數
scala 中 Array 類的 map()方法, 接收一個函數, 用於對數組內容進行操做 : spa
package com.msym /** * Created by msym on 2017/7/4. * http://www.cnblogs.com/daimajun/ */ object Demo { def main(args: Array[String]): Unit = { val arr = Array("aaa", "bbb") //原數組 for (x <- arr) println(x)//這裏的toUpperCase能夠加括號, 也能夠不加 val newArr = arr.map(x => x.toUpperCase()) //新數組 for (x <- newArr) println(x) } }打印出:scala
對於上面的代碼, 有一種更變態的方式, map()方法中傳遞的函數有所不一樣, 以下:code
val newArr = arr.map(_.toUpperCase)這裏的下劃線 "_" 表明的是每次數組中取出的元素, 而後將其轉爲大寫. htm