开发者学堂课程【Scala 核心编程 - 进阶:参数类型推断】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/610/detail/9092
参数类型推断
内容介绍:
一、高阶函数案例的小结
二、课堂练习案例
三、参数(类型)推断的基本介绍
四、参数类型推断的写法说明
五、应用案例
六、应用案例小结
一、高阶函数案例的小结
>说明: def minusxy(x: Int)= (y: Int)=> ×-y
1)函数名为 minusxy
2)该函数返回一个匿名函数
(y: Int)= > x -y
≥说明val result3 = minusxy(3)(5)
1) minusxy(3)执行minusxy(x: Int)得到(y: Int)=> 3-y这个匿名函数
2) minusxy(3)(5)执行(y: int)=> x- y这个匿名函数
3)也可以分步执行: val f1 = minusxy(3); val res = f1(90)
二、课堂练习案例
object Temp {
def main(args: Array[String]): Unit = {
def test1(x:
Double
) = {
(y: Double) =>r* x* y
//
}
val res = test1(2.0)(3.0)
println("res=" + res)//输出什么
}
}
Res=12.0
三、参数(类型)推断的基本介绍
参数推断省去类型信息(在某些情况下[需要有应用场景],参数类型是可以推断出来的,如 list=(1,2,3) list.map()map中函数参数类型是可以推断的),同时也可以进行相应的简写。
四、参数类型推断的写法说明
1)参数类型是可以推断时,可以省略参数类型
2)当传入的函数,只有单个参数时,可以省去括号
3)如果变量只在=>右边只出现一次,可以用_来代替
五、应用案例
//分别说明
val list = List(1,2,3,4)
println(list.map((x:lnt)=>x +1)
//
(2,3,4,5)
println(list.map((x)=>x + 1))
println(list.map(x=>x +1))
println(list.map(_ +1))
printLn( list.reduce(f1y)
/
/ 1
0
println(list.reduce((ni:Int ,h2:Int) ->n1 + n2)) / /10
printlnlist.reduce((ni ,n2)->n1 + n2)) / /1
0
printLn(list.reducei_ + _)
/
/10
val res = list.reduce(_+_)
六、应用案例小结
1) map 是一个高阶函数,因此也可以直接传入一个匿名函数,完成map
2)当遍历 list 时,参数类型是可以推断出来的,可以省略数据类型Int println(list.map((x)=>x +1))
3)当传入的函数,只有单个参数时,可以省去括号 println(list.map(x=>x+1))
4)如果变量只在=>右边只出现一次,可以用_来代替 println(list.map(_ +1))