标签:
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
scala的循环有while和for两种。
while循环和Java中的用法一样,如下:
scala中的for循环的用法跟Java中用法大相径庭,一般采用如下方式调用:
scala的for循环还可以包含多个生成器,多个生成器之间以分号分隔,如下:
for循环的生成器还可以带有守卫(过滤条件),如下:
我们还可以在for循环中是用yield关键字生成一个集合-这称为for的推导式,如下:产生一个新集合,只包含偶数
scala中并没有提供break,continue关键字。如果我们要跳出循环该怎么做呢?
最简单的方法就是我们定义一个Boolean类型的flag变量,用来控制跳出循环。除此之外,还可以按照如下方式处理:
标签:
原文地址:http://www.cnblogs.com/sysman/p/4422973.html