For与Function进阶实战、Lazy的使用笔记总结
本期内容:
1:For循环的进阶实战,(更多的实战代码)
2:Function进阶实战,(Function更多的定义和实现方式)
3:Lazy的使用,(延迟加载)
For循环常用:
for(i <- 1 to 2; j <- 1 to 2 if i!=j){
println((100*i+j)+" ")
}
Function函数:
注意:(特别重要)
1:scala中的函数是一定有值返回的,但可以在声明时不明确指定函数的返回值,代码块中的最后一个参数作为scala函数的返回值。
2:scala因为函数是有返值,所以,函数可以作为函数的参数去传递。
函数定义方式0:没有返回值的函数
def sum(x:Int){
val s=x+100
println(s) //println方法它的返回值Unit作为sum函数的返回值
}
函数定义方式1:声明没有明确指定返回类型的函数
def sum(x:Int)={
val s=x+100
}
//解析以上代码:用def关键字定义了一个名为sum的函数,这个函数有一个入参x,它的类型是Int,由与scala可以自动进行类型推到,这个函数没有明确指定它的返回值类型,={}这个代码块会进行自动的类型推到。
函数定义方式2:声明指定返回类型的函数
def sumAll(x:Int,y:Int):Int={
val s=x+y
s
}
//解析以上代码:这个函数指定了返回的类型,:Int={},指定了返回的类型为Int
函数定义方式3:匿名函数,没有名字的函数(特别重要)
val add = (x:Int) => x+100
//解析以上代码:左侧 val add 它是一个不可变变量,右侧(x:Int) => x+100它是一个匿名函数,右侧函数计算的结果赋值给左侧add这个变量。
println("结果是:"+add(50)) //调用打印结果为150
函数定义之递归方式:函数必须要有返回值
def fac(n: Int): Int = if (n <= 0) 1 else n * fac(n - 1)
//解析以上代码:fac这个函数必须要有返回值:Int,如果没有返回值,编译会失败并报错
函数的参数是可变的:也就是说函数的参数有很多个,如下代码(args: Int*和args: String*)表示可以传递多个参数
Demo1:
def content(args: Int*) = {
var result = 0;
for (sum <- args) {
result += sum
}
result
}
val sum = content(1, 2, 3, 4, 5, 6)
println("结果是:" + sum)
Demo2:
def lianjie(args: String*) = {
var result = "Hello:"
for (i <- args) {
result += i + ","
}
result
}
val str = lianjie("Spark", "Hadoop");
println("结果是:" + str)
结果是:Hello:Spark,Hadoop,
Lazy的使用:当一个变量或常量加了lazy关键字修饰时,表示只有在第一次被使用时,才会被实例化
lazy val file = Source.fromFile("D:\\hadssss.text") //此文件其实不存在,如果加了lazy关键字,不会出错。
println("scala")
//for (line <- file.getLines()) {
//println(line)
//}
转载于:https://www.cnblogs.com/supersom/p/5103695.html
For与Function进阶实战、Lazy的使用笔记总结相关推荐
- scala-04For与Function进阶实战、Lazy的使用
For与Function进阶实战.Lazy的使用 一.for循环的进阶实战 Def main=(args:Array[String]):Unit{ For(i<- 1 to 3;j<- 3 ...
- MySQL的进阶实战篇
关联文章: MySQL的初次见面礼基础实战篇 MySQL的进阶实战篇 本篇上一篇博文MySQL的初次见面礼基础实战篇的延续,是mysql的进阶内容的记录,本篇主要知识点如下: 进阶实战篇 进阶实战篇 ...
- 聊天机器人落地及进阶实战 | 公开课速记
嘉宾 | 邵浩 编辑 | suiling 来源 | AI科技大本营在线公开课 近年来,聊天机器人技术及产品得到了快速的发展.聊天机器人作为人工智能技术的杀手级应用,发展得如火如荼,各种智能硬件层出不穷 ...
- 今晚8点直播 | 详解聊天机器人落地及进阶实战
近年来,聊天机器人技术及产品得到了快速的发展.聊天机器人作为人工智能技术的杀手级应用,发展得如火如荼,各种智能硬件层出不穷. 本次公开课中,AI科技大本营联合电子工业出版社博文视点邀请到上海瓦歌智能科 ...
- 《大型网站技术架构》《K8S进阶实战》等书籍!送45本!读完工资多个0!
学习如逆水行舟,不进则退.所以又来给各位读者送书了,这次送45本技术书,内容涉及深度学习.Python.Dubbo.Flutter等. 感谢本次活动的赞助商『电子工业出版社博文视点』 另外!急于购书的 ...
- ROS 机器人操作系统进阶实战
ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...
- Linux Capabilities 入门教程--进阶实战篇
该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...
- oracle dba入门线路图--记某培训公司的ORACLE DBA技能进阶实战大纲
博主注:给oracle dba入门者的一点建议,个人也收藏一个. ORACLE DBA技能进阶实战 一.新手入行须知 首先了解DBA这个职业,再决定要不要做DBA:如果要做DBA,怎么才能做好DBA: ...
- 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试
Kali Linux渗透测试基础入门到进阶实战全程课 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥499.00 立即订阅 ...
最新文章
- (C++)自定义链表并写入
- boost安装(windows、linux)
- 又为写作思路熬到秃头?这16篇最新论文打包送你
- python 通信中间件_apachemiddleware-有用的Python中间件,用于mod\wsgi部署-James Gardner 0.1.1 0.1.0...
- MySQL sql99语法—自连接
- Objective-C使用位运算设计可复选的枚举
- web页面找不到资源文件,报404,但是资源文件存在且路径没错
- 职场人际关系该如何拿捏
- 2018年AI如何发展?普华永道做出了8点预测 | 报告下载
- 远程源已存在于“ git push”到新存储库中
- linux 进程和线程或线程和线程之间通过管道通信(pipe)
- django 使用新的虚拟环境
- Word2016--显示/隐藏书签、批量删除书签
- 模糊c均值聚类算法原理详细讲解
- 如何用ps将图片修改成指定大小
- GPS地图升级价格一览表
- 全国计算机系统导出名单,墨涩网 - 快速查询导出电脑常用信息——墨涩网
- CMD无限弹出窗口命令
- 电力行业信息系统的尖,峰,平,谷的英文翻译
- vue3—elementPlus如何单独修改页面中的下拉框样式