Scala学习笔记——内建控制结构
Scala的内建控制结构包括:if、while、for、try、match和函数调用
1.if表达式
//常见的写法
var filename = "name"
if (!args.isEmpty)
filename = args(0) //比较简洁的写法
var filename1 =
if (!args.isEmpty) args(0)
else "name" //更简洁的写法,不要有中间变量
println(if(!args.isEmpty) args(0) else "name")
2.while循环,while循环和其他语言的一样,有while和do while
Scala中对再次赋值语句的返回值是Unit,比如下面这个例子

3.for表达式
//列出当前目录的文件和文件夹
val filesHere = (new java.io.File(".")).listFiles for (file <- filesHere)
println(file) //打印1到4
for (i <- 1 to 4)
println(i) //打印1到3
for (i <- 1 until 4)
println(i) //for循环中的过滤功能
for (file <- filesHere if file.getName.endsWith("project"))
println(file) //for循环中的过滤功能,多个条件用;号分隔
for (file <- filesHere
if file.isFile;
if file.getName.endsWith("sbt")
) println(file) //嵌套枚举
for( a <- 1 to 3; b <- 1 to 3){
println( "Value of a: " + a );
println( "Value of b: " + b );
} //for循环采用yield,可以从存储中返回for循环中的变量的值,输出List(1, 2, 4, 5, 6, 7)
val numList = List(1,2,3,4,5,6,7,8,9,10)
System.out.println(
for{
a <- numList if a != 3; if a < 8
}yield a
)
4.使用try表达式处理异常
抛出异常
//抛出异常
def isEven(n : Int): Unit ={
val half =
if (n % 2 == 0) n / 2
else throw new RuntimeException("n必须是偶数")
}
捕获异常,finally语句
val file = new FileReader("input.txt")
try {
//使用文件
} catch {
//捕获异常
case ex: FileNotFoundException =>
case ex: IOException =>
} finally {
//确保文件关闭
file.close()
}
catch子语句的返回值
//try-catch-finally语句的返回值
def urlFor(path:String) =
try{
new URL(path)
}catch{
case e:MalformedURIException => new URL("www.scala-lang.org")
}
避免使用finally子句返回值

5.匹配(match)表达式
Scala的match表达式类似于switch语句,其中 _ 表示其他的情况
match表达式中的每一个备选项中break是隐含的,也就是不允许从一个备选项中落到下一个备选项中
//匹配表达式
val firstArg = if (args.length > 0) args(0) else ""
firstArg match {
case "1" => println("A")
case "2" => println("B")
case "3" => println("C")
case _ => println("D")
}
6.Scala中不再使用break和continue
可以用if替换每个continue,用布尔变量来替换每个break
Scala学习笔记——内建控制结构的更多相关文章
- Scala的内建控制结构
Scala中的内建控制机构仅有if.while.for.try.match和函数调用.虽然Scala的基础控制结构少,但也足以支持指令式语言里所有的实质内容.因为它们都能产生值,有助于缩短代码. 程序 ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Scala学习笔记及与Java不同之处总结-从Java开发者角度
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...
- Scala学习笔记(三)类层级和特质
无参方法 功能:将方法的定义转换为属性字段的定义: 作用范围:方法中没有参数,并且方法仅能通过读取所包含的对象属性去访问可变状态,而不改变可变状态,就可使用无参方法: 例子: abstract cla ...
- Go学习笔记06-内建容器
Go学习笔记06-内建容器 Go语言 数组 *切片(Slice) #F44336 Slice的操作 Map map示例 字符处理 数组 定义数组: //这样定义数组编译器自动初始化每个元素为0 va ...
- Scala学习笔记(五):内建控制循环
前言 Scala中内建控制循环包括if.while.for.try.match和函数调用. if和while与java类似,不做介绍. for 基础用法 def main(args: Array[St ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
- Scala学习笔记之:tuple、array、Map
[TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...
- 机器学习(三)--- scala学习笔记
Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...
随机推荐
- 潭州课堂25班:Ph201805201 爬虫基础 第九课 图像处理- PIL (课堂笔记)
Python图像处理-Pillow 简介 Python传统的图像处理库PIL(Python Imaging Library ),可以说基本上是Python处理图像的标准库,功能强大,使用简单. 但是由 ...
- java计算某个坐标是否在范围内
java电子围栏 圆.矩形.多边形算法 http://blog.csdn.net/deepak192/article/details/79402694/ java-经纬度有关的计算(半径内的经纬度范围 ...
- CocosCreator的Sprite的更换
先上图,左侧是运行的效果, cc.Class({ extends: cc.Component, /* * cocos creator动态更换纹理 *方法一,预先在编辑器里设置好所有的纹理,绑定到对应的 ...
- Android中Local Service最本质的作用是什么?
把Service等同于thread或process是一个非常常见的误解.需要强调又强调的第一点是,Android的Service是一个Context,并不必然等于一个额外的thread.如果你有仔细看 ...
- Shell Step by Step (4) —— Cron & Echo
6.脚本定时任务 # Example of job definition: # .------------------------- minute (0 - 59) # | .------------ ...
- bat遍历目录
方法一: for /r D:\要遍历的目录\ %%i (*.exe) do ( echo %%i ) 方法二: set DestPath=D:\你的目录\ rem 你的后缀 set Dest ...
- Scala:Next Steps in Scala
Array val greetStrings = new Array[String](3) greetStrings(0) = "Hello" greetStrings(1) = ...
- 理解 .NET 2015
去年跟着BUILD之后,我发了一篇文章Exciting Times for .NET 并从那以后我已经很荣幸地能够与.NET团队并肩作战,这其中包括了运行时.框架.语言和编译器.虽然去年我的重心已经更 ...
- ASP.NET Core入门系列教程
微软把这个新的框架叫:Razor Pages,以下文中我们将频繁提及—Razor Pages. 项目目录结构 wwwroot静态资源文件夹首先,Razor Pages项目中多了一个wwwroot的文件 ...
- 美化你的GRUB,全面支持中文(菜单、提示、帮助)适用7.04-9.04
本文根据网络资料整理而成,在此鸣谢各位作者. 本方法适合 7.04-9.04版本,9.10使用了grub2,请看这里. http://forum.ubuntu.org.cn/viewtopic.php ...