\quad \quad 条件表达式就是if表达式,if表达式可以根据给定的条件是否满足,根据条件的结果(真或假)决定执行相应的操作
\quad \quad if
语句有布尔表达式及之后的语句块组成。
语法:
if(布尔表达式)
{
// 如果布尔表达式为 true 则执行该语句块
}
例子:
scala> val x=20
x: Int = 20
scala> val result=if(x>=20){println(x)}
20
result: Unit = ()
\quad \quad if 语句后可以紧跟 else 语句,else 内的语句块可以在布尔表达式为 false 的时候执行。
语法:
if(布尔表达式){
// 如果布尔表达式为 true 则执行该语句块
}else{
// 如果布尔表达式为 false 则执行该语句块
}
例子:
scala> val sex="male"
sex: String = male
scala> val result=if(sex=="male") 1 else 0
result: Int = 1
块表达式:
scala> val a={
| println("3+4")
| 3+4
| }
3+4
a: Int = 7
scala> print(a)
7
\quad \quad if 语句后可以紧跟 else if…else 语句,在多个条件判断语句的情况下很有用。
语法:
if(布尔表达式 1){
// 如果布尔表达式 1 为 true 则执行该语句块
}else if(布尔表达式 2){
// 如果布尔表达式 2 为 true 则执行该语句块
}else if(布尔表达式 3){
// 如果布尔表达式 3 为 true 则执行该语句块
}else {
// 如果以上条件都为 false 执行该语句块
}
\quad \quad if…else 嵌套语句可以实现在 if 语句内嵌入一个或多个 if 语句。
语法:
if(布尔表达式 1){
// 如果布尔表达式 1 为 true 则执行该语句块
if(布尔表达式 2){
// 如果布尔表达式 2 为 true 则执行该语句块
}
}
\quad \quad 在Scala中,可以使用for和While,但一般推荐使用for表达式,因为for表达式语法更简洁
== to/range/unti==用法
nums1 to nums2
:[nums1 nums2],左闭右闭scala> 1 to 10
res12: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> 1.to(10)
res14: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> sum2(1,2)
range(nums1,nums2,n)
:[nums1 nums2) 左闭右开,其中n为间隔,且n不能为0scala> Range(1,10)
res13: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
scala> Range(1,10,2)
res16: scala.collection.immutable.Range = Range(1, 3, 5, 7, 9)
// 倒序
scala> Range(10,1,-1)
res17: scala.collection.immutable.Range = Range(10, 9, 8, 7, 6, 5, 4, 3, 2)
nums1 until nums2
:[nums1 nums2):左闭右开scala> 1 until 10
res18: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
scala> 1.until(10)
res19: scala.collection.immutable.Range = Range(1, 2, 3, 4, 5, 6, 7, 8, 9)
.toList
:区间转化为List// a为区间类型
a.toList
// 直接转换
scala> val list1=(Range(1,5)).toList
list1: List[Int] = List(1, 2, 3, 4)
scala> val list2=(1 to 5).toList
list2: List[Int] = List(1, 2, 3, 4, 5)
语法:
for( x <- 表达式/数组/集合 ){
// 表达式;
}
例子:
scala> for (i <- 1 to 3){
| println(i)
| }
1
2
3
scala> for (a <- 1.to(3);b <- 1 to 2){
| println( "Value of a: " + a );
| println( "Value of b: " + b );
| }
Value of a: 1
Value of b: 1
Value of a: 1
Value of b: 2
Value of a: 2
Value of b: 1
Value of a: 2
Value of b: 2
Value of a: 3
Value of b: 1
Value of a: 3
Value of b: 2
语法
for( x <- List ){
statement(s);
}
scala> val numsList=List(1,2,3,4)
numsList: List[Int] = List(1, 2, 3, 4)
scala> for (a <- numsList){
| println(a)
| }
1
2
3
4
\quad \quad Scala 可以使用一个或多个 if 语句来过滤一些元素。
for( var x <- List
if condition1; if condition2...
){
statement(s)};
scala> val numsList=List(1,2,3,4,6,7,10)
numsList: List[Int] = List(1, 2, 3, 4, 6, 7, 10)
scala> for (a <- numsList
| if a!=3;if a<8)
| {
| println(a)
| }
1
2
4
6
7
yield
表达式构建处一个集合,我们把使用yield的for表达式称之为推导语法
var retVal = for{ var x <- List
if condition1; if condition2...
}yield x
例子:
object for_u {
def main(args:Array[String]){
var a=0;
val numList= List(1,2,3,4,5,8,9,10)
// for循环
var retval= for{a<- numList
if a!= 3;if a<8}yield a
// 输出返回值
for(a <- retval){
println(a)
}
}
}
\quad \quad 只要给定的条件为 true,Scala 语言中的 while 循环语句会重复执行循环体内的代码块。
语法
while(condition)
{
statement(s);
}
在这里,statement(s) 可以是一个单独的语句,也可以是几个语句组成的代码块。
condition 可以是任意的表达式,当为任意非零值时都为 true。当条件为 true 时执行循环。 当条件为 false 时,退出循环,程序流将继续执行紧接着循环的下一条语句。
例子:
object while_test {
def main(args:Array[String]): Unit ={
var a=10;
while(a<15){
println(a)
a+=1
}
}
}
不像 while 循环在循环头部测试循环条件, Scala 语言中,do…while 循环是在循环的尾部检查它的条件。
do…while 循环与 while 循环类似,但是do…while 循环会确保至少执行一次循环。
语法:
do {
statement(s);
} while( condition );
例子
object while_test {
def main(args:Array[String]): Unit ={
var a=16;
do{
println(a)
a+=1
}while(a<15)
}
}
\quad \quad 如果条件永远为 true,则循环将变成无限循环。我们可以使用 while 语句来实现无限循环:
object Test {
def main(args: Array[String]) {
var a = 10;
// 无限循环
while( true ){
println( "a 的值为 : " + a );
}
}
}
break
语句可以用于跳出循环,可以用在 for 循环、while 循环、switch 循环中。当我们在一个循环中使用了break 语句,则会中断循环,但是仍会继续执行循环之后的代码哟。
continue
语句用于在发生指定的条件时,中断循环中的一个迭代,然后继续循环中的下一个迭代。
与 break 语句不同的是, break 会执行跳出整个循环,而 continue 只是跳出本次循环,继续下一次循环。也就是说假如一共有10次循环,在第 5 次循环时使用 break,后面的循环不会再执行。但是如果在第 5 次循环的时候执行 continue ,只有第 5 次循环不会执行,但会继续执行第6次、7次…等循环。
在Scala 中,break/ continue关键字被移除了
如果一定要使用break/ continue,就需要使用scala.util.control._包的Break类的breable和break方法
break语句
import scala.util.control.Break._
语法
// 导入以下包
import scala.util.control.Break._
// 在 breakable 中循环
breakable{
// 循环
for(...){
....
// 循环中断
break();
}
}
例子:
import scala.util.control.Breaks._
object for_u {
def main(args:Array[String]){
breakable{
for (i <- 1 to 20){
if(i >= 10)break()
else println(i)
}
}
}
}
continue的实现与break类似,但有一点不同:
实现break是用breakable{}将整个for表达式包起来,而实现continue是用breakable{}将for表达式的循环体包含起来就可以了
例子:
import scala.util.control.Breaks._
object for_u {
def main(args:Array[String]){
for (i <- 1 to 20){
breakable{
if(i % 10==0)break()
else println(i)
}
}
}
}