分支
Scala 通过if else 语法实现程序分支示例如下:
object IfElseDemo01 {
def main(args: Array[String]): Unit = {
testif
}
def testif(): Unit ={
var age =StdIn.readInt();//从控制台读取一个年龄值
if(age>18){
println("已成年")
}else{
println("未成年")
}
}
}
ifelse注意事项
1)如果大括号的逻辑只有一行 则大括号可以省略
2)Scala中没有三目运算符 ,使用ifelse 来代替
var res = if(1==1)"12" else "22"
3)Scala中任意表达式都是有返回值的,if else 表达式也是有返回结果的,具体返回结果取决于最后一行代码的执行内容
object IfElseDemo01 {
def main(args: Array[String]): Unit = {
println("结果:"+testif)//如果输入
}
def testif(): Any ={
var age =StdIn.readInt();
return if(age>18){
println("已成年")
"12"
}else{
println("未成年")
13
}
}
}
输出结果
22
已成年
结果:12
Scala中没有switch而是使用模式匹配来处理
for循环
Scala 中的for循环比java 强大 支持 额外操作,比如 循环守卫、定义变量、返回结果等具体示例如下
//基本for 循环语法 to 表示 [1-3]
def testFor(): Unit ={
for(i<-1 to 3 ){
println(i)
}
}
//基本for 循环语法 until表示[1,3)
def testFor2(): Unit ={
for(i<-1 until 3 ){
println(i)
}
}
//循环守卫
def testFor3(): Unit ={
// 只有在i !=2 的时候才输出
for(i <-1 to 3 if i!=2 ){
println(i)
}
// 等同于如下代码
for(i <-1 to 3 ){
if(i!=2)
println(i)
}
// 引入变量
for(i <-1 to 3;j=i*4 ){
println(i)
}
// 上述代码等同于
for(i <-1 to 3){
var j=i*4
println(i)
}
// 循环返回值
//将便利过程中处理结果返回到一个新的 Vector集合中,使用yield关键字
//yield 可以跟一个代码块 {}
var res = for(i <-1 to 3) yield i*5
println("新集合:"+res)//新集合:Vector(5, 10, 15)
//for循环可以使用花括号代替小括号
for{
i<-1 to 3
j=i*2}{
}
//for 循环步长控制 从1到10 步长为2
//步长也可以通过循环守卫类实现 i%2
for(i<- Range(1,10,2)){
println("步长控制:"+i)
}
}
while 和 do while 循环
语法示例如下
/**
* 因为while中没有返回值,所以当需要用该语句返回结果时,必须使用循环外的变量
* 来保存结果,就是说循环体 对 外部变量产生了影响,不推荐使用,推荐使用 for
*/
def testWhile1={
var i =0
while(i<10){
println("while 循环"+i)
i+=1
}
}
/**
* do while 先执行逻辑再进行逻辑条件判断
*/
def testWhile2={
var i =0
do{
println("while 循环"+i)
i+=1
}while(i<10)
}
Scala中的 continue 和break
为了更好的适应函数化编程 Scala 中没有 break 和 continue 只能使用函数式风格来实现类似的功能,示例如下:
/**
* 循环中的 break 和 continue
* 为了更好的适应函数化编程 Scala 中没有 break 和 continue
* 只能使用函数式风格来实现类似的工鞥,
* break 实现
* 1、导入 import util.control.Breaks._
* 2、循环外使用 breakable 实际上就是利用异常来实现
* breakable 中会通过try catch补捕获
*break 方法 抛出的异常
*
* 3、循环内 使用 break()抛出异常
*
* continue 可以通过循环体内 if else 嵌套实现或者使用循环守卫
*/
def testBreak= {
var i=0;
breakable{//会捕获 break 抛出的异常
while(true){
i+=1
println("异常测试"+i)
if(i==2){
break()//会抛出异常
}
}
}
}