前言
此系列为scala学习文章,适用于为学spark而学习scala
视频参考地址:Scala快速入门(适合为学Spark学习Scala的同学)
系列文章如下:
6. Scala学习06——trait特性、模式匹配、偏函数、样例类
资料下载地址:Scala课件资料.docx
目录
一、 循环语句
1. if else
val age =18
if (age < 18 ){
println("no allow")
}
else if (18<=age&&age<=20){
println("allow with other") //输出该语句
}else{
println("allow self")
}
2. for
(1)to和until 的用法(不带步长,带步长区别)
- 在scala中,Range代表的是一段整数的范围
- until和Range是左闭右开,1是包含的,10是不包含。而to是左右都包含。
/**
* to和until
* 1 to 10 返回1到10的Range数组,包含10
* 1 until 10 返回1到10 Range数组 ,不包含10
*/
println(1 to 10 )//打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
println(1.to(10))//与上面等价,打印 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
println(1 to (10 ,2))//步长为2,从1开始打印 ,1,3,5,7,9
println(1.to(10, 2))
println(1 until 10 ) //不包含最后一个数,打印 1,2,3,4,5,6,7,8,9
println(1.until(10))//与上面等价
println(1 until (10 ,3 ))//步长为2,从1开始打印,打印1,4,7
for(i <- 0 to 10);
for(i <- 0 until 10);
var r = Range(1,10);
var r = Range(1,10,2);//1到10的整数,步长为2,步长不能为0,默认步长为1
这些底层其实都是Range,Range(1,10,2):1是初始值,10是条件,2是步长,步长也可以为负值,递减。
(2)创建for循环
for( i <- 1 to 10 ){
println(i)
}
//for循环数组
val arr=Array(“a”,”b”,”c”)
for(i<-arr)
println(i)
- 多层 for 循环,可以用分号隔开
- 字符串占位符用 s"第 $ i 次 "
- scala中不能使用count++,count—只能使用count = count+1 ,count += 1
//可以分号隔开,写入多个list赋值的变量,构成多层for循环
//scala中 不能写count++ count-- 只能写count+
var count = 0;
for(i <- 1 to 10; j <- 1 until 10){
println("i="+ i +", j="+j)
count += 1
}
println(count);
//例子: 打印小九九
for(i <- 1 until 10 ;j <- 1 until 10){
if(i>=j){
print(s"$i * $j = " + i*j + '\t')
}
if(i==j ){
println()
}
}
- for循环中可以加条件判断,可以使用分号隔开,也可以不使用分号(使用空格)
for(i <- 1 to 10 ; if(i%2 == 0) ; if(i>=5)){
println(s"第 $i 次 输出结果")
}
- for循环用yield 关键字返回一个集合(把满足条件的i组成一个集合)
var res = for (i <-1 to 20 if (i>5)) yield i
println("res",res)
输出为vector集合
3. while,do...while...
- while循环,while(){},do {}while()
var i = 0
var j=0
// while
while(i<3){
println(s"第 i $i 次")
i +=1
}
//do...while...
do{
println(s"第 j $j 次")
j +=1
}while(j<3)
输出结果: