scala学习之控制结构
来源:互联网 发布:sql数据库名称是什么 编辑:程序博客网 时间:2024/06/15 01:33
今天接着林老师的scala教程之控制结构,学习内容主要有三个,分别是if 、while、for这三个。不管哪种语言,这三种结构用的都非常非常频繁。所以,sclala语言也不除外。
scala:if条件表达式
在Scala中,执行if语句时,会首先检查if条件是否为真,如果为真,就执行对应的语句块,如果为假,就执行下一个条件分支。
新建test.scala ,然后 计入编辑,输入如下内容
val x = 3if (x>0) { println("This is a positive number")} else if (x==0) { println("This is a zero")} else { println("This is a negative number")}
有一点与Java不同的是,Scala中的if表达式的值可以赋值给变量,比如:
val x = 6val a = if (x>0) 1 else -1
————————————————————————————————————-
Scala:while循环
Scala中也有和Java类似的while循环语句。(虽然我不懂java。捂脸~……~)
var i = 9while (i > 0) { i -= 1 printf("i is %d\n",i)}
当为do-while语句,如下:
var i = 0do { i += 1 println(i)}while (i<5)
———————————————————————————————————————
Scala:for循环
这个控制结构是最重要的,也是最常用的
Scala中的for循环语句格式如下:
for (变量<-表达式) 语句块
其中,“变量<-表达式”被称为“生成器(generator)”
下面给出一个实例:
for (i <- 1 to 5) println(i)
在上面语句中,i不需要提前进行变量声明,可以在for语句括号中的表达式中直接使用。语句中,“<-”表示,之前的i要遍历后面1到5的所有值。
同Range用法类似,这里可以改变步长,比如设置步长为2,如下所示:
for (i <- 1 to 5 by 2) println(i)
这样会得到下面结果
1
3
5
但是,有时候,我们可能不希望打印出所有的结果,我们可能希望过滤出一些满足制定条件的结果,这个时候,就需要使用到称为“守卫(guard)”的表达式。比如,我们只希望输出1到5之中的所有偶数,可以采用以下语句
for (i <- 1 to 5 if i%2==0) println(i)
这样,就只会得到1~5所有的偶数
Scala也支持“多个生成器”的情形,可以用分号把它们隔开,比如:
for (i <- 1 to 5; j <- 1 to 3) println(i*j)
运行上述代码后得到如下执行结果(注意输出个数):
1
2
3
2
4
6
3
6
9
4
8
12
5
10
15
也可以给每个生成器都添加一个“守卫”,如下:
for (i <- 1 to 5 if i%2==0; j <- 1 to 3 if j!=i) println(i*j)
运行上述代码后得到如下执行结果:
2
6
4
8
12
for推导式
有时候,我们需要对上述过滤后的结果进行进一步的处理,这时,就可以采用yield关键字,对过滤后的结果构建一个集合。比如,我们可以采用以下语句:
scala> for (i <- 1 to 5 if i%2==0) yield ires3: scala.collection.immutable.IndexedSeq[Int] = Vector(2, 4)
上面这种带有yield关键字的for循环,被称为“for推导式”。这个概念源自函数式编程,也就是说,通过for循环遍历一个或多个集合,对集合中的元素进行“推导”,从而计算得到新的集合,用于后续的其他处理.
____________________________2017.03.03_________________________________________
总结下:依我看来,
(1)上面的三个控制结构都很重要,if和while可以划归为一类。它们后面都是判断语句,如果为真,就执行对应的语句块,如果为假,就执行下一个条件分支。
(2)for和上面的两类不是很一样,for语句“生成器”里面的“守卫”是一个技巧,要掌握。
- scala学习之控制结构
- scala学习三 控制结构
- Scala学习笔记-控制结构
- scala基础之控制结构
- Scala入门之控制结构
- scala基础之控制结构
- Scala学习(基础,控制结构)
- Scala学习(二)--- 控制结构和函数
- [scala之二]控制结构和函数
- Scala(三)之“控制结构”
- scala常用语法之控制结构
- scala之控制结构和函数
- Scala 之控制结构(二)
- scala控制结构
- Scala控制结构讲解
- 2.scala控制结构
- scala控制结构
- Scala控制结构
- 基于hibernate的BaseDao
- 我的辣条厉害了
- curl网站开发指南
- cc1101 高级驱动程序
- 遗传算法入门到掌握(二)
- scala学习之控制结构
- HIVE SQL 基本语法
- 同一个tomcat不同端口部署不同项目
- 461. Hamming Distance(快速算法)
- Android开发中的一些常用方法
- Hadoop_MapReduce中的WordCount运行详解
- Kylin实践之使用Hive视图
- js小技巧篇(自触发,容错,与或,多绑定)
- PAT 5-3 顺序存储的二叉树的最近的公共祖先问题【二叉树】