scala函數語言程式設計
阿新 • • 發佈:2018-12-12
什麼是函數語言程式設計
在面向物件程式設計中,我們把**物件傳來傳去, 那在函數語言程式設計中,我們要做的是把函式**傳來傳去,而這個,說成術語,我們把他叫做高階函 數。 – 在函數語言程式設計中,函式是基本單位,是第一型,他幾乎被用作一切,包括最簡單的計算,甚至連變數都被計算所取代。在函數語言程式設計中,變數只是一個名稱,而不是一個儲存單元,這是函數語言程式設計與傳統的指令式程式設計最典型的不同之處。 • 函數語言程式設計的抽象本質則是將函式也作為一個抽象單位,而反映成程式碼形式,則是高階函式。
object TestFunc { type FilterFunc = Array[String] => Boolean //方法返回值是一個函式 def buildFun():FilterFunc={ (arrStr:Array[String])=>{ arrStr(1).equals("0") } } // def isRight(): FilterFunc ={ // // } def sayMyName(name: String = "Jack"): Unit = { println(name) } def sumMoreParmeters(elem: Int*): Int = { var sum = 0 for (e <- elem) { sum += e } sum } def add(a: Int, b: Int): Int = a + b def add2 = add(_: Int, 4) def fac(n: Int): Int = if (n <= 0) 1 else n * fac(n - 1) //函式柯里化 // def mulitply(x: Int)(y: Int) = x * y def m2 = mulitply(2) _ val t = () => 333 def testfun02(fn: () => Int) = { println(fn()) 1000 } val d1 = (a: Int) => a + 100 def testfn1(callback: (Int, Int) => Int) = { println(callback(123, 123)) } def add3(x: Int, y: Int, z: Int): Int = { def add2(x: Int, y: Int): Int = { x + y } add2(add2(x, y), z) } def main(args: Array[String]): Unit = { println("staty") sayMyName("rose") val sum: Int = sumMoreParmeters(5, 3, 4, 5, 6, 76) println(sum) println(add(2, 3)) println(add2(2)) val rs: Int = fac(5) println(rs) val f = (a: Int, b: Int) => { println(a * b) a + b } println("=====") testfn1(f) } }