Scala守卫语句的集中用法

2021年11月21日 阅读数:7
这篇文章主要向大家介绍Scala守卫语句的集中用法,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

相比于JAVA,Scala的if增长了两项强大的功能,一是能够直接做为赋值语句,另外一种功能是做为守卫语句,不只远远超过JAVA,甚至也将PYTHON抛在身后。ide

1. if做为赋值语句

做为赋值语句,不单单只是替代了三元运算符,并且还能支持逻辑语句块,以下:scala

  •  
val (a, b) = (10, 20)//  更添加更多逻辑控制,且支持语句块val value = if(a > b) 1 else if(a == b) {  val c = a - 1  c * c} else 1

2. if做为for守卫语句

if做为for守卫语句能实现过滤的效果,显著地下降循环次数,而且更易读,以下:设计

  •  
//  返回大于5的偶数,类型为Vectorval items = for(i <- 1 to 10 if i % 2 == 0 if i > 5) yield i;

从上面能够看出,if做为for守卫语句具备以下特色:it

1. 一个for循环能够支持多个if语句,以空格、回车字符分割
2. 多个if语句之间的关系是逻辑与(&&);for循环

须要注意,if守卫语句并不支持其余循环语句,如while。class

3. if做为case守卫语句

继续上面的例子,在做为case守卫语句中,能细化case语句的粒度,更易于控制逻辑流转,以下:循环

  •  
var vs = items match {  // 判断x的长度  case x if x.size < 1 => null  //  判断x的内容  case x if x.contains(8) => 8}
  •  

对于“case”语句,虽然没有显式的“break”语句,可是依旧是“知足即阻断”,只会执行最早知足的“case”,因此,设计“case”执行逻辑时,最重要的就是执行逻辑的优先级。yield

结论

熟练使用if语句,能实现很优雅的短码效果,更能达到Python提倡的“用一条语句(集合)解决一个问题”。im

Scala守卫语句的集中用法_scala