码迷,mamicode.com
首页 > 其他好文 > 详细

3.控制结构

时间:2015-04-14 00:27:36      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

1.条件判断语句

scala中的if语句的使用方法跟Java中基本一样。不过在Scala中if-else语句是有返回值的,该值就是if或者else最后一行

表达式返回的值。来看个例子:

技术分享

根据REPL中打印的结果,我们可以看到result是Int类型的。result变量的具体值取决于x。

习惯于Java编程的读者,可能比较容易写出如下的代码。

技术分享

这种代码当然也可以正常运行。但是我们需要敲的代码量更多了。更重要的是我们必须定义一个接受if-else返回值的变量(

而函数式编程一再强调少用var)。

 

Java中有一个三目运算符,功能跟scala中的if-else类似,如下:

技术分享

实际上Java的三目运算符功能要比scala的if-else弱很多。因为Java的三目运算符之间不能添加其他语句。而Scala可以:

技术分享

 

最后我们说一下Scala中的if-else控制结果的返回值的类型是如何确定的,先看如下代码:

技术分享

其实在Scala中if-else返回值的类型是所有分支的公共父类型。所以第一次返回值类型是Int,第二次是Any(Int和String的

公共符类型)。这点值得注意下。那么如果所有的分支都不符合条件,if-else的返回值是什么呢?看实验:

 技术分享

 

 即如果所有分支都不符合的话,那么返回Unit 

2.循环语句

scala的循环有while和for两种。

while循环和Java中的用法一样,如下:

技术分享

 

scala中的for循环的用法跟Java中用法大相径庭,一般采用如下方式调用:

技术分享

scala的for循环还可以包含多个生成器,多个生成器之间以分号分隔,如下:

技术分享

for循环的生成器还可以带有守卫(过滤条件),如下:

技术分享

我们还可以在for循环中是用yield关键字生成一个集合-这称为for的推导式,如下:产生一个新集合,只包含偶数

技术分享

 

scala中并没有提供break,continue关键字。如果我们要跳出循环该怎么做呢?

最简单的方法就是我们定义一个Boolean类型的flag变量,用来控制跳出循环。除此之外,还可以按照如下方式处理:

技术分享

 

3.控制结构

标签:

原文地址:http://www.cnblogs.com/sysman/p/4422973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!