大数据DTSpark”蘑菇云”行动之 第四课:零基础彻底实战Scala控制结构
Scala语言有的基本控制结构有:顺序、条件、循环。这与其它JVM语言是一致的,在Scala中同时还有一些高级的流程控制结构类模式匹配等。
说明:
一、条件控制结构
1、在Scala中if条件表达式是有值的!!!这与Java是不一样的。
2、if条件表达式会根据if后面括号里的boolean值来决定整个if表达式的值。
3、if条件表达式可以进行类型推导,类型推导的一般过程就是根据变量的值的类型来推导确定变量的类型,这在很多复杂算法的实现时可以省略变量类型的书写,从而为实现复杂算法提供了极大的便利。
4、如果if后面没有else部分,默认的实现是if(…)…else…,下面的例子节选自Spark的核心类SparkContext,在else部分虽然不返回有意义的结果,但是依然没有省略else,而是使用了else {None}这种方式,其目的是为确保if条件表达式的类型为处理逻辑需要的类型Option,需不是Any类型,为后续处理提供基础。
if (isEventLogEnabled) {Some(logger) } else { None}
5、if表达式中如果有多条语句可以使用{}括起来,关于返回的计算结果是由{}中最后一条语句决定。
6、if表达式可以用在for循环等其它控制结构中用于限制结果。
二、循环控制结构
1、循环是不断轮回一个集合,循环有两种:for、while。需要循环的语句块用{}括起来,根据for(…)或while(…)中值决定循环的控制。
2、for循环(…)里面提取的集合的item来作为{…}的输入进程流程控制。
3、for循环中加入的if叫做条件守卫,用于限制for循环(优化for循环,去掉不必要的执行步骤,或者说用于跳出for循环)。
4、在for循环中能够提取出什么内容取决于后面的集合的类型!
5、需跳出for循环的话,除了加入if守卫以外,还可以使用return关键字来结束方法或函数。
6、while循环在实际Server和Framework开发中至关重要,如让一个线程一直循环下去,一般都会使用while。