快捷搜索:  汽车  科技

scala语言特性包含(条件表达式与循环)

scala语言特性包含(条件表达式与循环)下面给出一个实例:for(变量<-表达式)语句块其中,“变量<-表达式”被称为“生成器(generator)”。objectTest{ defmain(args:Array[String]){ varx=10; if(x<20){ println("x<20"); } } }保存Test.scala文件,然后,使用下面命令执行代码$scalacTest.scala $scalaTest x<20和Java一样,if语句可以采用各种嵌套的形式,比如:valx=3 if(x>0){ println("Thisisapositivenumber") }elseif(x==0){ println("Thisisazero") }else{ println("Thisisanegativenumber

​今天带大家一起过一遍scala语言的基础知识,涵盖if条件表达式、for循环与while循环。

scala语言特性包含(条件表达式与循环)(1)

if条件表达式

Scala IF...ELSE 语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

新建Test.scala,用于测试我们撰写的代码。

cd/usr/local/scala vim./mycode/test.scala

请在Test.scala文件中输入以下代码。

objectTest{ defmain(args:Array[String]){ varx=10; if(x<20){ println("x<20"); } } }

保存Test.scala文件,然后,使用下面命令执行代码$scalacTest.scala $scalaTest x<20和Java一样,if语句可以采用各种嵌套的形式,比如:valx=3 if(x>0){ println("Thisisapositivenumber") }elseif(x==0){ println("Thisisazero") }else{ println("Thisisanegativenumber") }但是,有一点与Java不同的是,Scala中的if表达式的值可以赋值给变量,比如:valx=6 vala=if(x>0)1else-1

scala语言特性包含(条件表达式与循环)(2)

while循环

Scala中也有和Java类似的while循环语句。

vari=9 while(i>0){ i-=1 printf("iis%d\n" i) }

当然也会有do-while语句,如下:

vari=0 do{ i =1 println(i) }while(i<5)

scala语言特性包含(条件表达式与循环)(3)

for循环

Scala中的for循环语句格式如下:

for(变量<-表达式)语句块

其中,“变量<-表达式”被称为“生成器(generator)”。

下面给出一个实例:

for(i<-1to5)println(i)

在上面语句中,i不需要提前进行变量声明,可以在for语句括号中的表达式中直接使用。语句中,“<-”表示,之前的i要遍历后面1到5的所有值。
语句执行结束后,会打印出下面结果:

1 2 3 4 5

当然,在前面的Range那一节,我们介绍了Range的使用方法,因此,这里可以改变步长,比如设置步长为2,如下所示:

for(i<-1to5by2)println(i)

这样会得到下面结果:

1 3 5

但是,有时候,我们可能不希望打印出所有的结果,我们可能希望过滤出一些满足制定条件的结果,这个时候,就需要使用到称为“守卫(guard)”的表达式。比如,我们只希望输出1到5之中的所有偶数,可以采用以下语句:

for(i<-1to5ifi%2==0)println(i)

这样,就只会得到下面的偶数结果:

2 4

有时候,我们需要对上述过滤后的结果进行进一步的处理,这时,就可以采用yield关键字,对过滤后的结果构建一个集合。比如,我们可以采用以下语句:

scala>for(i<-1to5ifi%2==0)yieldi res3:scala.collection.immutable.IndexedSeq[Int]=Vector(2 4)

上面这种带有yield关键字的for循环,被称为“for推导式”。这个概念源自函数式编程,也就是说,通过for循环遍历一个或多个集合,对集合中的元素进行“推导”,从而计算得到新的集合,用于后续的其他处理。

参考链接:

http://dblab.xmu.edu.cn/blog/spark/

https://www.runoob.com/scala/scala-tutorial.html

猜您喜欢: