循环语句是指令式编程的常见语句,Scala对其加以改进,成为适应函数式风格的利器。

for循环中的变量,没有val或者var,是因为变量的类型,完全是集合中的元素的类型。作用域持续到括号结束。

在scala中,没有continue和break。continue可以用if守卫来完成。

break有一下几种方式:

1.使用Boolean控制变量

2.使用函数return来模拟

3.使用Breaks对象。

for循环中可以定义任意多的生成器,用;隔开,每个生成器,都可以带一个守卫,if 加Boolean表达式,中间不用分号隔开。

For循环也可以有返回值的,返回的是一个List。在每一轮迭代中加入yield,yield后的值可以加入到List中。这种循环成为for推导式,一下是例子:

注意yield前面不能加{}。(否则报错)

 1 val file = List("warn 2013 msg", "warn 2012 msg",
2 "error 2013 msg", "warn 2013 msg")
3
4 def wordcount(str: String): Int = str.split(" ").count("msg" == _)
5
6 val counts =
7 for (line <- file)
8 yield wordcount(line)
9
10 val num = counts.reduceLeft(_ + _)
11
12 println("wordcount:" + num)

注意,for推导式生成的元素类型和第一个生成器的类型,是兼容的。

最新文章

  1. SQL Server 使用全文索引进行页面搜索
  2. PHP-递归扫描目录和删除目录
  3. [XAF] 多级联列表显示
  4. POJ 1917
  5. mac 80端口映射 配置
  6. 源码安装Postgresql9.4.1
  7. 【BZOJ】【4002】【JLOI2015】有意义的字符串
  8. Jersey(1.19.1) - Building URIs
  9. 简单的html5 File base64 图片上传
  10. if exists和if not exists关键字用法
  11. B - The Suspects -poj 1611
  12. MFC框架类、文档类、视图类相互访问的方法
  13. C#_会员管理系统:开发八(权限分配)
  14. Python的变量参数
  15. 织云 Metis:看腾讯怎么做智能运维
  16. 大数据时代,Wyn Enterprise和您一起探讨CIO的困境和出路 ZT
  17. 洗礼灵魂,修炼python(76)--全栈项目实战篇(4)—— 购物车系统
  18. 如何安装psutil以及提示缺少python.h头文件
  19. MVC之路由
  20. Gym - 100712D Alternating Strings

热门文章

  1. 文件上传和下载(可批量上传)——Spring(二)
  2. 《BI那点儿事》数据流转换——字符映射表
  3. python collections defaultdict
  4. 关于Jquery动画滞后问题(转)
  5. java高薪之路__007_反射
  6. JS Map 和 List 的简单实现代码
  7. android定义启动唯一apk
  8. ruby bundle config 镜像映射配置
  9. 利用jsoup进行模拟登录
  10. 20169212《Linux内核原理与分析》第一周作业