scala-高阶函数

//1类似于lambda表达式的函数直接量======================
var get = (name: String) => {
  println(123 + name)
}

get("456")

//2高阶函数:func为传入的参数(String为func的参数类型,Unit为func的返回类型)======================
def get1(func: (String) => Unit, name: String) {
  func(name)
}

def func1(x: String) = {
  println(123 + x)
}
get1(func1, "p")

//3高阶函数, 返回一个函数======================
def get2(num: Int = 123): (String) => Unit = {
  (x1: String) => println(num + "+" + x1)
}
//解法1
var ret_func = get2(666)
ret_func("2k")
//解法2,currying函数概念(使用了“闭包”就是变量num)
get2(666)("3k")

println((1 to 5).map(_ + 1)) //对每个元素+1操作
println((1 to 5).filter(_ % 2 == 0)) //过滤

println((1 to 5).reduce(_ + _)) //累加

println((1 to 5).sortWith(_ > _)) //大的数排在左边

//return的用法======================
def get3(x: Int): Int = {
  def get4(x: Int): Int = {
    return 1 + x
  }

  get4(x) + 3
}
get3(2)

 

posted @ 2018-03-21 20:57  soft.push("zzq")  Views(138)  Comments(0Edit  收藏  举报