本期内容:
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的使用笔记总结相关推荐

  1. scala-04For与Function进阶实战、Lazy的使用

    For与Function进阶实战.Lazy的使用 一.for循环的进阶实战 Def main=(args:Array[String]):Unit{ For(i<- 1 to 3;j<- 3 ...

  2. MySQL的进阶实战篇

    关联文章: MySQL的初次见面礼基础实战篇 MySQL的进阶实战篇 本篇上一篇博文MySQL的初次见面礼基础实战篇的延续,是mysql的进阶内容的记录,本篇主要知识点如下: 进阶实战篇 进阶实战篇 ...

  3. 聊天机器人落地及进阶实战 | 公开课速记

    嘉宾 | 邵浩 编辑 | suiling 来源 | AI科技大本营在线公开课 近年来,聊天机器人技术及产品得到了快速的发展.聊天机器人作为人工智能技术的杀手级应用,发展得如火如荼,各种智能硬件层出不穷 ...

  4. 今晚8点直播 | 详解聊天机器人落地及进阶实战

    近年来,聊天机器人技术及产品得到了快速的发展.聊天机器人作为人工智能技术的杀手级应用,发展得如火如荼,各种智能硬件层出不穷. 本次公开课中,AI科技大本营联合电子工业出版社博文视点邀请到上海瓦歌智能科 ...

  5. 《大型网站技术架构》《K8S进阶实战》等书籍!送45本!读完工资多个0!

    学习如逆水行舟,不进则退.所以又来给各位读者送书了,这次送45本技术书,内容涉及深度学习.Python.Dubbo.Flutter等. 感谢本次活动的赞助商『电子工业出版社博文视点』 另外!急于购书的 ...

  6. ROS 机器人操作系统进阶实战

    ROS(Robot Operating System) 是一个开源的机器人操作系统,目的是提供开发平台.工具及生态给开发人员,可以让开发人员快速开发.本课程通过精心设计的案例,分析技术要点.理解运行原 ...

  7. Linux Capabilities 入门教程--进阶实战篇

    该系列文章总共分为三篇: Linux Capabilities 入门教程:概念篇 Linux Capabilities 入门教程:基础实战篇 Linux Capabilities 入门教程:进阶实战篇 ...

  8. oracle dba入门线路图--记某培训公司的ORACLE DBA技能进阶实战大纲

    博主注:给oracle dba入门者的一点建议,个人也收藏一个. ORACLE DBA技能进阶实战 一.新手入行须知 首先了解DBA这个职业,再决定要不要做DBA:如果要做DBA,怎么才能做好DBA: ...

  9. 视频教程-Kali Linux渗透测试基础入门到进阶实战全程课-渗透测试

    Kali Linux渗透测试基础入门到进阶实战全程课 本人有多年的服务器高级运维与开发经验,擅长计算机与服务器攻防及网络攻防技术!对网络安全领域有持续的关注和研究! 林晓炜 ¥499.00 立即订阅 ...

最新文章

  1. (C++)自定义链表并写入
  2. boost安装(windows、linux)
  3. 又为写作思路熬到秃头?这16篇最新论文打包送你
  4. python 通信中间件_apachemiddleware-有用的Python中间件,用于mod\wsgi部署-James Gardner 0.1.1 0.1.0...
  5. MySQL sql99语法—自连接
  6. Objective-C使用位运算设计可复选的枚举
  7. web页面找不到资源文件,报404,但是资源文件存在且路径没错
  8. 职场人际关系该如何拿捏
  9. 2018年AI如何发展?普华永道做出了8点预测 | 报告下载
  10. 远程源已存在于“ git push”到新存储库中
  11. linux 进程和线程或线程和线程之间通过管道通信(pipe)
  12. django 使用新的虚拟环境
  13. Word2016--显示/隐藏书签、批量删除书签
  14. 模糊c均值聚类算法原理详细讲解
  15. 如何用ps将图片修改成指定大小
  16. GPS地图升级价格一览表
  17. 全国计算机系统导出名单,墨涩网 - 快速查询导出电脑常用信息——墨涩网
  18. CMD无限弹出窗口命令
  19. 电力行业信息系统的尖,峰,平,谷的英文翻译
  20. vue3—elementPlus如何单独修改页面中的下拉框样式

热门文章

  1. 联想K系引领智能电视潮流,Android 4.0将成行业标配
  2. 知其然不知其所以然的悲惨后果【EF CodeFirst 实体关系两日游】
  3. 实验五 数据库完整性技术
  4. Hibernate程序性能优化的考虑要点
  5. ifm management of technology q and a session 2
  6. formal timetable for cambridge
  7. term date at Cambridge
  8. Cryptocurrency Blockchain Internship Programme
  9. 能力的齿轮每一次卡不上点的时候都是下一个批评的开始
  10. 安利一波veronica老师