/*
* 函数字面量
* 另一种定义函数的方式
/*
// 定义函数的方式一: def
def getSum(x:Int, y:Int):Int = {
x + y
}
// 定义函数的方式二: 字面量
val getSum1 = (x:Int, y:Int) => {
x + y
}
def main(args: Array[String]): Unit = {
println( getSum(10,20))
println( getSum1(10,20))
函数的简化
/*
* 函数字面量的简化写法
*/
//
val getSum = (x:Int, y:Int) => {
x + y
}
// 省略 { }
val getSum1 = (x:Int, y: Int) => x + y
// 使用 _ 来代替形参
val getSum2 = (_:Int) + (_:Int)
// 使用 _ 来代替形参, (Int,Int)=>Int 就是getSum3的类型!
val getSum3:(Int, Int)=>Int = _ + _
def main(args:Array[String]): Unit = {
println( getSum(10,20))
println( getSum1(10,20))
println( getSum2(10,20))
println( getSum3(10,20))
/*
*部分应用函数
*
* 如果一个函数需要两个参数,而我们只给了两个参数,会怎么样?
*/
def getSum(a:Int,b:Int,c:Int):Int = {
a + b + c
}
def main(args:Array[String]): Unit = {
println( getSum(10,20,30))
val t = getSum(10, 20,_) // t 就是部分应用函数!
val t1 = getSum(_,20,_)
println( t(50))
print( t1(20,50) )
/**
*
* 高阶函数: 一种特殊的函数,它的参数或者返回值是函数类型
* 1.map函数
*
*/
def main(args:Array[String]): Unit = {
val arr1 = Array(1,2,3,4,5,6)
//Array是一个构造器,用来定义一个数组
// arr1 就是一个数组对象,它有很多的方法,其中就有map.
// for 循环来输出数组中每一个元素
val fn = (x:Int) => x * 2
//fn是一个函数,它被传给了map.map是一个高阶函数
val arr2 = arr1.map(fn)
// for循环来输出数组中每一个元素
for(i <- arr2){
println(i)