参数类型推断 | 学习笔记

简介: 快速学习参数类型推断

开发者学堂课程【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)// 10

println(list.reduce((ni:Int ,h2:Int) ->n1 + n2)) / /10

printlnlist.reduce((ni ,n2)->n1 + n2)) / /10

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))

相关文章
|
10月前
|
人工智能 数据可视化 架构师
三句话生成 P5.js 粒子特效代码,人人都可以做交互式数字艺术
短短几分钟,两个完全不懂P5.js的人类,和通义灵码AI程序员一起,共同完成了有真实物理引擎和碰撞检测的3D仿真动画。人类扮演的角色更像产品经理和架构师,提出开发需求和迭代修改方案,而AI的作用更像码农,任劳任怨,熟练用各种编程语言完成技术底层的脏活累活。这只是AI编程的冰山一角,未来,每一个艺术家都能快速做出自己的创意原型,每一个数学老师都能轻松做出自己的教学动画。
|
安全 Linux 网络安全
2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-B-CTF夺旗与攻击
模块C和D是CTF夺旗比赛,分别侧重攻击和防御。作为渗透测试工程师,你需要在靶机(Linux/Windows)上找寻多种漏洞,如命令注入、文件上传、文件包含、远程代码执行和缓冲区溢出,以获取权限。同时,注意不能攻击裁判服务器,违者将被罚离场。提交靶机的唯一标识flag值并按规则加分。模块D中,你需要在堡垒服务器上发现并修复同样类型的漏洞,保证服务可用性,制作系统防御报告,所有截图需清晰,文件以PDF格式保存提交。
326 0
|
存储 算法 编译器
【C++初阶】STL详解(三)vector的介绍与使用
【C++初阶】STL详解(三)vector的介绍与使用
164 0
|
编译器 Linux Nacos
请问Nacos cpp sdk 有计划支持vs吗?
请问Nacos cpp sdk 有计划支持vs吗?
203 1
|
前端开发 容器
使用css实现按钮、容器边框线旋转移动
实现按钮、容器边框线旋转移动
【无功优化】考虑泄流效应的光伏并网点电压系统侧无功优化(Matlab代码实现)
【无功优化】考虑泄流效应的光伏并网点电压系统侧无功优化(Matlab代码实现)
【无功优化】考虑泄流效应的光伏并网点电压系统侧无功优化(Matlab代码实现)
|
存储 设计模式 Java
【JAVA】让 ChatGPT 来浅说 AQS
又迎来了一年一度的金三银四,虽然说今年的大环境不好,但是招聘还是在火热进行中。 面试过 Java 工程师的小伙伴都知道,Java 中的 AQS 是面试高频题,面试官上来就直接了当地问,AQS 知道是什么吧,来讲讲它是怎么实现的,以及哪些地方用到了它。
234 0
|
关系型数据库 数据库 对象存储