Scala函数式编程
Scala中的函数
def myFunc() = "hello world"
val v1 = myFunc()
myFunc(v1)
Array(1, 2, 3).map((x:Int) => x * 3)
def someAction(f:(Double) => Double) = f(10)
import scala.math._
someAction(sqrt)
def mytest(x:Int, y:Int, f:):Int = {x*y + 100}
def myFunction(f:(Int, Int) => Int, x:Int, y:Int):Int = {f(x, y)}
myFunction(mytest, 2, 3)
闭包
def mulBy(factor:Double) = (x:Double) => x * factor
val triple = mulBy(3)
val half = mulBy(0.5)
println(triple(2))
println(half(10))
柯里化
- 把具有多个参数的函数转换为一个函数链,该链表上的每个节点都是单一函数参数
def add(x:Int, y:Int) = x + y
def add(x:Int)(y:Int) = x + y
add(2)(3)
常用高阶函数
val numbers = List(1,2,3,4,5,6)
numbers.map((i:Int) => i * 2)
numbers.foreach((i:Int) => i * 2)
number.filter((i:Int) => i%2 == 0)
number.filter(_ % 2 == 0)
List(1,2,3).zip(List(4,5,6))
number.partition((i:Int) => i%2 == 0)
number.find(_ % 3 == 0)
List(List(1,2,3), List(4,5,6)).flatten
var myList = List(List(1,2,3), List(4,5,6))
myList.flatMap(x => x.map(_ * 2))