object funcHighLevel { def main(args: Array[String]): Unit = { // 创建一个匿名函数 val sayFunc = (name: String) => println("hello ," + name) // 定义一个方法传入一个函数 def greeting(func: (String) => Unit, names: String) { func(names) } // 在定义一个 name,age是参数 val induceMyself = (name:String ,age:Int) => { println("hello,my name is " + name +",and i'm " + age + " years old.") } // 这里的fun是函数名,可以调整修改 def introduce(fun :(String , Int) => Unit , name:String , age:Int): Unit = { fun(name , age) } greeting(sayFunc, "yxj") // introduce(induceMyself , "yxj" , 30) val rs = Array(2, 3, 4, 5, 6).map((num: Int) => { num * num }) println(rs.mkString(",")) // 高阶函数的另一个功能,就是将函数作为返回值 def getGreetingFunc(msg:String) = (name:String) => println(msg + " , " + name) // 传入msg,返回一个函数,参数是name val greetingFunc = getGreetingFunc("hello") // 调用先返回的是一个函数 greetingFunc("yxj") // 匿名函数具体调用和执行 } }