Scala 控制结构
Scala内建的控制结构屈指可数,仅有if, while, for, match, try和函数调用而已。
几乎所有的Scala控制结构都会产生某个值(while和 do while虽然不能产生有意义的值,但是也会返回Unit类型的值,称为unit value,写成 () )。unit value () 是Scala的Unit不同于Java的void的地方。通常赋值语句会返回 unit value ()。因此Java代码中经常用于文件读取的代码:
var line = ""
while((line = fr.readline()) != ""){
println("Read: " + line)}
即使换成了Scala风格的也不能运行,因为line = fr.readline()作为赋值语句返回的是 (), 其和字符串 "" 比较总不相等,所以会陷入死循环。
For循环
另外,在for循环中还可以加入过滤器filter, 其实就是if判断,例如: (注意两个条件之间要用分号隔开)
for(file <- fileList
if file.isFile;
if file.getName().endWith(".scala")
)println(file.getName())
for循环也可以在一个语句中嵌套,例如:
for(file <- fileList
lilne <- fileLines(file))println(line)
Match匹配
与Java的switch相比,match还是有些不同的,主要体现在以下几点:
1)任何类型的常量(或其它什么东西)都可以当成Scala里比较用的样本 (case),而不只是java中的整数类型和枚举常量;
2)Scala 的模式匹配没有break,但其实是隐含的。
3)match表达式也能产生值。。。很强大,可以将匹配得到的值作为返回值赋给其它变量。
抛弃break和continue
Scala去掉了break和continue,因为函数式风格不需要。。。可用if代替每个continue,用布尔变量代替每个break。
变量范围
Scala的变量的有效作用范围和Java很相似,唯一需要注意的地方是Scala允许在内部范围内定义与外部范围内名字相同的变量。内部变量被认为是遮蔽了外部的变量。例如:
for(i <- 1 to 2){
val a = 5
val b = 10
if(true){
val a = 6
println(a.toString())
println(b.toString())
}
println(a.toString())
} //输出:6 10 5 6 10 5
Scala 控制结构的更多相关文章
- 2.scala控制结构、函数、异常处理
2.scala控制结构.函数.异常处理---小书匠,在线编辑器,MARKDOWN,Evernote,文件版本 a:focus { outline: thin dotted #333; outline: ...
- scala控制结构
#判断 scala> def min(x:Int,y:Int):Int={ var a=x if(x>y) a=y return a } scala> min(1,2)res1: I ...
- Scala实战高手****第4课:零基础彻底实战Scala控制结构及Spark源码解析
1.环境搭建 基础环境配置 jdk+idea+maven+scala2.11.以上工具安装配置此处不再赘述. 2.源码导入 官网下载spark源码后解压到合适的项目目录下,打开idea,File-&g ...
- Scala 编程(四)内建控制结构
if 表达式 Scala 的 if 如同许多其它语言中的一样工作.它测试一个状态并据其是否为真,执行两个分支中的一个: var filename = "default.txt" i ...
- scala编程(七)——内建控制结构
几乎所有的 Scala 的控制结构都会产生某个值.这是函数式语言所采用的方式,程序被看成是计算值的活动,因此程序的控件也应当这么做.另外,指令式语言经常具有三元操作符(如 C,C++和 Java 的? ...
- Programming In Scala笔记-第九章、控制抽象
本章主要讲解在Scala中如何使用函数值来自定义新的控制结构,并且介绍Curring和By-name参数的概念. 一.减少重复代码 1.重复代码的场景描述 前面定义的函数,将实现某功能的代码封装到一起 ...
- 2019/2/23Scala学习开始(Scala简介)
Scala简介 Scala是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性. Scala运行在Java虚拟机上,并兼容现有的Java程序 ...
- Scala详解
1 快速入门... 4 1.1 分号... 4 1.2 常变量声明... 4 1.2.1 val常量... 4 1.2.2 ...
- Scala学习(二)练习
Scala控制结构和函数&练习 1. 一个数字如果为正数,则它的signum为1:如果是负数,则signum为-1:如果为0,则signum为0:编写一个函数来计算这个值 简单逻辑判断: 测试 ...
随机推荐
- SugarSync网盘之XML解析
iOS的XML解析 刚在应用里支持了SugarSync网盘.其实也是第一次听说这个网盘,不过在国外貌似还蛮有名,这些都不是重点,重点是借此来总结一下iOS的XML解析.Xml想必也不陌生了,但是在iO ...
- [Usaco2008 Jan]Cow Contest奶牛的比赛[神奇的FLOYD]
Description FJ的N(1 <= N <= 100)头奶牛们最近参加了场程序设计竞赛:).在赛场上,奶牛们按1..N依次编号.每头奶牛的编程能力不尽相同,并且没有哪两头奶牛的水平 ...
- 为什么选择MongoDB?
为什么选择MongoDB? 阅读目录 开始 为啥用MongoDB? 原来的架构 新需求 如何解决? 新思路 选型条件 一些候选者 最初的选择 代价 新的候选者 重新选择 胆子大一点 胆子再大一点 胆子 ...
- 使用protobuf编写配置文件以及读写
.proto文件示例 message Configure { required ; required uint32 port = ; } 写配置文件 Configure config; config. ...
- CSS hack大全&详解(什么是CSS hack)
1.什么是CSS hack? 本文转自程序园学院:http://www.kwstu.com/Admin/ViewArticle/201409011604277330 CSS hack是通过在CSS样式 ...
- xhEditor入门基础
一.下载最新版本xhEditor:http://xheditor.com/download (官网无法下载,CSDN提供下载:http://download.csdn.net/detail/itmy ...
- MySQL 常用命令大全2
下面贴出我在实际工作中遇到mysql操作数据表的sql命令,如有不对的地方,请多指教: c++链接mysql头文件命令 g++ is_in_polygon.cpp -o is_in_polygon - ...
- MS Sql Server 消除重复行 保留信息完整的一条 2011-11-26 13:19(QQ空间)
select company ,count(company) as coun into myls from mylist group by company having count(company)& ...
- hive 不同用户 权限设置 出错处理
今天安装了hive 在a账号安装的,一切正常 但是到其他账户下,报错 >show tables; Error in metadata: java.lang.RuntimeException: U ...
- poj 3897 Maze Stretching 二分+A*搜索
题意,给你一个l,和一个地图,让你从起点走到终点,使得路程刚好等于l. 你可以选择一个系数,把纵向的地图拉伸或收缩,比如你选择系数0.5,也就是说现在上下走一步消耗0.5的距离,如果选择系数3,也就是 ...