第3课 隐式转换

1)val array=Array(1,2,3,4,5);
array.map(item => 2*item);map的作用是循环遍历array中的每一个元素,并把每个元素做为具体的值传给map中的做为参数的函数。map执行结果为Array[Int] =Array(2,4,6,8,10);函数的参数也是函数,item时匿名函数,这个也是高阶函数
2)高阶函数的返回值也可能是函数。高阶函数的参数是函数,这是高阶函数的2个层面。高阶函数可以自动推断出函数参数的类型。而且对只有一个参数的函数,可以省略参数和参数类型外围的小括号。如果在函数的参数的作用的函数体中,只使用了一次参数的具体的值的话,可以将参数的名称省略,用_代替。
3)科里化,有俩个参数的函数,可以转化为俩个函数,第一个函数接收那函数的第一个参数,第2个函数接收那函数的第2个参数,俩个函数的连续调用,有闭包的功能。
4)Spark,叫做分布式数据集合的函数式编程。即函数式编程作用于数据集合之上
5)隐式转换,隐式类,隐式参数,隐式对象,基本思想是可以手动指定,将某种类型的对象,或者类转化成其它类型的对象或者类,之所以要转换是因为,类本身没有这个方法,但我找他要这个方法,所以它要按我们指定的规则,进行隐式转换成具有这个方法的类型或者对象。然后使用这个类型或者对象,调用这个方法,处理我们想要的功能,如人看到怪兽,变成超人。变身打怪兽,完后又是正常人。   
6)定义了隐式转换函数,在编写程序的时候,被scala会自动使用在上下文中。scala会根据隐式转换函数的签名,在程序运行时,使用隐式转换函数,将接收的参数类型定义的对象自动升级转换成隐式转换后的对象。它转换成另一种类型的对象返回,这个时候,这个实例对象,就可能会有之前没有的方法了。使用完成之后消失,继续回归正常。隐式转换,本身不是用户手动调用的。    例如:scala运行时,会看Flie有没有speak这个方法,如果没有,java会报错而scala会看看有没有隐式转换,能够转换成具有这个方法的增级版本的类型的对象。如果有就会自定的进行隐式转换。函数名称定义为 implicit def manToSuperMan();什么to什么的格式。这样可以很好的扩展接口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值