天天看點

scala --高階函數

  scala 混合了面向對象和函數式的特征。 在函數式的程式設計語言中,函數是可以像其他的資料類型一樣被傳遞和操作。這對于想将詳細動作傳入給算法時變得非常有用。

import scala.math._
val fun = ceil _  /從技術上将 _的作用是将ceil方法變成了函數
res = fun(num) / num = 3.14 , res = 4 

Array(3.14, 1.42, 2.0).map(fun) / Array(4.0, 2.0, 2.0)      

 map方法接受一個函數參數, 将他應用到數組中的所有值, 然後傳回結果的數組。

 建立匿名函數

(x: Double) => 3 * x 
Array(3.14, 1.42, 2.0).map((x :Double) => 3 * x) //Array(9.42, 4.26, 6.0)      
 def valueAtOneQuarter(f: (Double) => Double) = f(0.5)
 valueAtOnequarter(ceil _) // 1.0
 valueAtOneQuarter(sqrt _) // 0.5 (0.5 * 0.5 = 0.25 )      
def mulBy(factor: Double) = (x: Double) => factor * x
 mulBy(3) / (x: Double) => 3 * x