for循环相关
循环语句是指令式编程的常见语句,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推导式生成的元素类型和第一个生成器的类型,是兼容的。
for循环相关的更多相关文章
- for循环相关的一个问题
首先,我在for循环外定义了两个变量. //在4条直线方向,获取预置点两端的8个点的棋盘信息 ,r=,c=;//step代表直线,r,c分别代表加上偏移量之后的坐标 ,myCount=,hisCoun ...
- foreach和List.Foreach 退出循环相关问题
foreach: continue;:退出本次循环 break;:退出循环 return;:退出循环 List.Foreach: return;:退出本次循环 小结:list.Foreach中不能退出 ...
- 小白学python-day04-运算符、while循环相关
今天是day04.以下是学习总结. 但行努力,莫问前程. ----------------------------------------------------------------------- ...
- 051_switch语句的使用 052_while循环详解 053_for循环详解_dowhile简介 054_嵌套循环_循环相关练习
051_switch语句的使用 package testmode2;/** * 测试switch语句 * 遇到多值判断的时候,使用switch.当然,switch完全可以使用ifelseifelse代 ...
- nodejs net模块
net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net.Socke ...
- 《JavaScript Dom编程艺术》(第二版)
第一章<JavaScript简史> 1.JavaScript是一种脚本语言,通常只能通过Web浏览器去完成一些操作而不能像普通意义上的程序那样独立运行,它需要由Web浏览器进行解释和执行. ...
- 【原】理解javascript中的闭包
闭包在javascript来说是比较重要的概念,平时工作中也是用的比较多的一项技术.下来对其进行一个小小的总结 什么是闭包? 官方说法: 闭包是指有权访问另一个函数作用域中的变量的函数.创建闭包的常见 ...
- Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程
Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程 这里的函数式编程的设计以muduo为例进行对比说明: Reactor实现架构对比 面向对象的设计类图如下: 函数式编程以muduo为例 ...
- 基于DDD的.NET开发框架 - ABP模块设计
返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应 ...
随机推荐
- Giving Data Backup Option in Oracle Forms 6i
Suppose you want to give the data backup option in Oracle Forms application to some client users, wh ...
- Django migrations 重命名
1:如果migrations文件中想要重命名文件,重命名后有一次修改models文件,再次执行python makegirations ******,再次执行migrate的时候发现报错了,在我往后的 ...
- px和em的区别(转)
在国内网站中,包括三大门户,以及“引领”中国网站设计潮流的蓝色理想,ChinaUI等都是使用了px作为字体单位.只有百度好歹做了个可调的表率.而 在大洋彼岸,几乎所有的主流站点都使用em作为字体单位, ...
- js之oop <五>对象序列化(js的JSON操作)
js对象序列化的过程,就是对象转换为JSON的过程.JSON.stringify() 将对象序列化成JSON.(接收对象,输出字符串) var obj = {x:2,y:3}; var str = J ...
- myeclipse/eclipse没有Project Facets的解决方法
http://www.cnblogs.com/jerome-rong/archive/2012/12/18/2822783.html 经常在eclipse中导入web项目时,出现转不了项目类型的问题, ...
- MySQL 循环执行kill语句杀掉连接
mysql中创建索引时,一直卡住不动,刚开始以为可能是数据量太大导致的,可是一直等了很久还是一样没有反应,看来操作的表被锁住了,执行show processlist 果然发现有大量的lock,使用ki ...
- 字符串与模式匹配(一)——KMP算法
源码:kmp.cpp // KMP.cpp : Defines the entry point for the console application. // #include "stdaf ...
- to my friends-Don't give up so fast
早上听到大学挺要好的朋友突然说要换行,心情就一股莫名的哀伤,因为当初是三个人一起约定好的,要朝着我们共同的目标而努力奋斗的,这股热情怎能这么轻易地被现实的冷水浇灭.没错,我们是刚出社会的毛头小子,我们 ...
- iOS开发UI篇—Quartz2D简单使用(一)
iOS开发UI篇—Quartz2D简单使用(一) 一.画直线 代码: // // YYlineview.m // 03-画直线 // // Created by apple on 14-6-9. // ...
- java string.format()
String text=String.format("$%1$s 门市价:¥%2$s",18.6,22);$18.6 门市价:¥22