Scala编程——第三章:Scala流程控制

一、流程控制说明

  • Scala流程控制结构和java语言基本相同。主要有以下三种结构:
    • 顺序控制:程序从上到下顺序执行,中间没有任何的判断和跳转
    • 分支控制if-else分支; switch分支(scala中没有switch,而是使用模式匹配,后面单独讲解)
    • 循环控制while循环for循环(for功能很强大,后面单独讲。)

二、分支控制

1.if-else

  • Scala的if-else跟其他语言一样,首先测试某个条件,然后根据条件是否满足来执行不同代码分支当中的一个。不过,Scala中的if-else表达值有值,这个值就是if或者else之后的表达式的值。
    val s = if(x>0) 1 else -1
    
  • Scala 不支持三元运算。如java中的 x>0? 1 : -1;

2. switch(模式匹配)

  • scala中没有switch,而是使用模式匹配,模式匹配功能很强大,后面单独讲解。
  • 参考链接:todo

三、循环控制

1.while

  • Scala中的while 循环跟其他语言用起来没多大差。它包含了一个条件检查和一个循环体,只要条件检查为真,循环体就会 遍接着一遍地执行。包含 while循环 和 do-while循环。
  • while循环与if-else不同,while循环没有返回值,即整个while的语句结果是Unit类型的()。-
  • Scala 中没有 i++ 和 ++i,只有 i += 1或者 i = i+1;

1.1while循环中的中断

  • Scala内置控制结构特地去掉了break和continue,是为了更好的适应函数化编程,推荐使用函数式的风格解决break和contine的功能,而不是一个关键字。
  • 解决办法:使用if 或者 循环守卫实现 continue;使用布尔值 或者 breakable 实现 break;
    //java中的continue 和break
    int i = 0;
    boolean foundIt = false;
    while(i< args.length){
       if(args[i].starsWith("-")){
       	i = i+1;
       	continue;
       }
       if(args[i].endWith(".scala")){
       	foundIt = true;
       	break;
       }
       i++;
    }
    
    //scala实现continue 和 break
    var i = 0;
    var foundIt = false;
    while(i < args.length && !foundIt){ //使用布尔值foundIt实现break功能
       if(!args.startsWith("-")){ //使用 if 实现continue功能
       	if(args[i].endsWith(".scala"))
       		foundIt = true;
       }
       i = i+1;
    }
    
  • 使用breakable 实现 break
    //使用Breaks对象的中的break()方法
    import scala.utils.control.Breaks._
    
    breakable{
    	for(...){
    		if(...) break;//退出breakable块
    	}
    }
    

2.for

3.while与for

  • 因为while中没有返回值,所以当要用该语句来计算并返回结果时,就不可避免的使用var 定义变量 ,而变量需要声明在while循环的外部,那么就等同于循环的内部对外部的变量造成了影响,所以不推荐使用,而是推荐使用for循环,除非for循环无法满足。
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页