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学习笔记——内建控制结构的更多相关文章

  1. Scala的内建控制结构

    Scala中的内建控制机构仅有if.while.for.try.match和函数调用.虽然Scala的基础控制结构少,但也足以支持指令式语言里所有的实质内容.因为它们都能产生值,有助于缩短代码. 程序 ...

  2. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  3. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

  4. Scala学习笔记(三)类层级和特质

    无参方法 功能:将方法的定义转换为属性字段的定义: 作用范围:方法中没有参数,并且方法仅能通过读取所包含的对象属性去访问可变状态,而不改变可变状态,就可使用无参方法: 例子: abstract cla ...

  5. Go学习笔记06-内建容器

    Go学习笔记06-内建容器 Go语言 数组 *切片(Slice) #F44336 Slice的操作 Map map示例 字符处理 数组 定义数组: //这样定义数组编译器自动初始化每个元素为0  va ...

  6. Scala学习笔记(五):内建控制循环

    前言 Scala中内建控制循环包括if.while.for.try.match和函数调用. if和while与java类似,不做介绍. for 基础用法 def main(args: Array[St ...

  7. 【大数据】Scala学习笔记

    第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java  以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...

  8. Scala学习笔记之:tuple、array、Map

    [TOC] 本文<快学Scala>的笔记 tuple学习笔记 tuple的定义 对偶是元组(tuple)的最简单形态--元组是不同类型的值的聚集. 元组的值是通过将单个值包含在圆括号中构成 ...

  9. 机器学习(三)--- scala学习笔记

    Scala是一门多范式的编程语言,一种类似Java的编程语言,设计初衷是实现可伸缩的语言.并集成面向对象编程和函数式编程的各种特性. Spark是UC Berkeley AMP lab所开源的类Had ...

随机推荐

  1. Problem D: 指针函数

    Description YHZ自认为很聪明的人, 在C语言课上老师布置了一个作业,让能求正方形和圆的面积, 正当YHZ要跃跃欲试的时候, 老师却要求使用函数指针来实现这个功能,YHZ立马就不会了,他现 ...

  2. 一些公司的面试题目 U3D

    #include <iostream> using namespace std; int main() { int N; while (cin>>N&&N> ...

  3. PHP错误:Namespace declaration statement has to be the very first statement in the script

    PHP错误:Namespace declaration statement has to be the very first statement in the script 原因:意思就是“names ...

  4. ArcGIS Pro 获得工具的个数

    import arcgisscripting import string; gp = arcgisscripting.create(9.3); ##多少个工具箱 toolboxes = gp.list ...

  5. VS2010链接TFS遇见错误:TF204017,没有访问工作区域,需要一个或者多个必须权限

    最近刚刚搭建好服务器,然后准备将VSS源代码迁移到TFS源代码管理服务器上面.在我本机先用的服务器帐号来上传初始化源代码数据库,然后我又用自己的帐号进行迁出代码的时候发生的异常. 造成上述错误,主要是 ...

  6. maven学习二(dependencies)

    在前面一篇文章maven学习一(HelloWorld工程)已经对maven有了基本介绍,本文开始介绍maven依赖,通过如何如何增加log4j来学习maven的dependencies no-depe ...

  7. .NET 并行编程——数据并行

    本文内容 并行编程 数据并行 环境 计算 PI 矩阵相乘 把目录中的全部图片复制到另一个目录 列出指定目录中的所有文件,包括其子目录 最近,对多线程编程,并行编程,异步编程,这三个概念有点晕了,之前我 ...

  8. 树莓派3中没有/dev/video0的解决方法(使用OpenCV编程调用树莓派摄像头的方法)

    一.问题 使用下列方法调用OpenCV编程调用树莓派摄像头时总是失败,提示调用Grabber的start()时失败. import org.bytedeco.javacpp.opencv_core; ...

  9. N1, T1刷机记录

    硬件配置 N1和T1使用的是晶晨Amlogic方案的芯片, 配置明细分别如下, 都是现在盒子的主流配置 N1CPU: Amlogic S905, ARM Cortex-A53 四核 up to 2.0 ...

  10. Visual Studio 统计代码行数

    介绍一种简单的统计代码行数的小技巧, 使用正则表达式,用VS强大的查找功能 b[^:b#/]+.$ 最后结果: