Spark学习(4)——scala条件控制与循环

if表达式

If表达式的定义:在scala中,if表达式是有值得,就是if或者else中最后一行语句返回的值
例如:val age =30;if(age>18) 1 else 0
运行结果:

if表达式赋值给一个变量:val  result = if(age>18) 1 else 0

If表达式的类型推断:由于if表达式是有值的,而ifelse子句的值类型可能不同,此时if表达式的值类型是什么呢,scala会自行推断,取两个类型的公共父类型

例如: if(age>18) 1 else 010都是int,所以返回值类型也是int

例如: if(age>18) “adult” else 0,此时ifelse的值类型分别是Stringint,则表达式的值类型是AnyAnyStringint的公共父类型。

如果if后面没有跟else 则默认else的值是Unit,也用()表示,类似于Java中的void或者null

例如val age =30;if(age >18) “adult”,此时就相当于if(age >18) “adult” else  ()

语句终结符、块表达式

默认情况下,scala不需要语句终结符,默认将每一行作为一个语句

一行放多条语句:如果一行要放多条语句,则必须使用语句终结符

例如:使用分号作为语句终结符,

Var a,b,c =0;if(a<10){b=b+1;c=c+1},运行结果如下:

通常来说,对于多行语句,还是会使用花括号的方式

If(a<10){

b=b+1

c=c+1

}

块表达式:块表达式,指的就是{}中的值,其中可以包含多条语句,最后一个语句的值就是块表达式返回的值。

例如:var d =if(a<10){b=b+1;c=c+1;b+c}

输入与输出

Printprintlnprint打印时不会加换行符,println打印时会加个换行符

例如:print(“hello world”);println(“hello world”)

Printf:printf可以用于格式化,例如:printf(“hi my name is  %s\n”,”张三”)

readLine:readLine允许我们从控制台读取用户输入的数据,类似Java中的System.inScanner的作用

例如:

Val  name =readLine(“welcome ,please  tell me your name”)

Print(“please tell me your age”)

Val age =readInt()

If(age >18){

Printf(“Hi ,%s,you are %d years old”,name,age)

}else{

Printf(“Hi ,%s,you are %d years old”,name,age)

}



循环

While do循环scalawhile do循环,基本语义与Java相同,例如:var  n =10

While(n >0){

Print(n+” ”)

n-=1

}

Scala 没有Java那种for循环,可以使用scala独有的简易for循环

简易版for循环:var n=10 for(i <-  1 to n) print(i+” ”)

使用until:表示不达到上限,for( I <-  1 until n) print(i+” ”),如运行结果,不包括上边界10

也可以对字符串进行遍历,类似于Java的增强for循环, for(c <- “Hello World”) print(c)

跳出循环

Scala没有提供类似于Javabreak语句

但是可以使用boolean变量,return,或者Breaksbreak函数来替代使用

例如:

Import  scala.util.control.Breaks._

Breakable{

var n =10

for(c <- “Hello World”) {

If(n== 5) break

Print(c)

n -=1

}

}

高级for循环

多重for循环

for(I <- 1 to 9;j< - 1 to 9){

If(j==9){

Println(I * j+” ”)

}else{

Print(I * j+” ”)

}

}

If 守卫 取偶数,scala可以在for语句中加入if判断,例如:for(I <- 1 to 10 if  i%2 ==0) print(i)

for 推导式,构造集合

例如:for(I <- 1 to 10) yield i

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值