Scala学习笔记-Day03

while循环的中断

scala内置控制结构特地去掉了break和continue,是为了更好的适应函数化编程,推荐使用函数式的风格解决break和continue的功能,而不是一个关键字。

如何实现break的效果
  def main(args: Array[String]): Unit = {
    var n = 1
    //breakable()函数
    //说明:
    //1.breakable 是一个高阶函数,可以接受一个函数的函数就是高阶函数
    //2. def brakable(op: =>Unit){
    /*
    try{
        op
       }catch{
       case ex:BreakControl=>
       if(ex breakException ) throw ex
       }}
       (1) op: => Unit 表示接受的参数是一个没有输入,也没有返回值的函数
       (2) 即可以简单的理解可以接受一段代码块
     */
    //3. breakable 对break()抛出的异常做出了处理,代码就可以继续执行
    //4. 当我们传入的是代码块,scala程序员会将() 换成{}
    breakable {
      while (n <= 20) {
        n += 1
        if (n == 18) {
          //中断while循环
          //1.在Scala中函数式的break函数中断循环
          //. def break():Nothing ={throw breakExcetion}
          break
        }
      }
    }
    print(n)
  }
}

注意break函数,可以使用在for 或者do...while

breakabl{i<1 to 100){
    print(i)
    if(i==20){
        break 
    }
}}
如何实现continue的效果

scala内置控制结构特地去掉continue,是为了更好的适应函数化编程,可以使用if--else或是循环守卫实现continue的效果

def main(args: Array[String]): Unit = {
    //说明:
    //1. 1 to 10
    //2. 循环守卫 if(i!=2 && i!=3) 这个条件为true,才执行循环体
    // 即当i == 2 或者i== 3 时就跳过
    for(i<- 1 to 10 ; if(i!=2 && i!= 3)){
      println(i)
    }
  }
见多识广,

当我们在使用循环守卫时,系统会自动判断当loop变为false时,已经没有任何机会编程true,所以程序就会跳出,而不是一直进行判断

    var loop = true
    var sum2 = 0
    for(i<- 1 to 100 if loop == true){
      sum2+=i
      if(sum2 >20){
        println("循环守卫中断, 第一次大于20的当前数="+i)
        loop = false
      }
      println("i="+i
    }
  }

函数式编程的基础部分

函数式编程内容:

  1. 函数定义/声明
  2. 函数运行机制
  3. 递归 [推荐编程者使用递归解决问题,算法的基础,邮差问题,最短路径,背包问题,迷宫问题,回溯]
  4. 过程
  5. 惰性函数和异常

函数式编程高级

  1. 值函数(函数字面量)
  2. 高阶函数
  3. 闭包
  4. 应用函数
  5. 柯立化函数

几个概念的说明

在学习Scala中将方法\函数\函数式编程和面向对象编程明确一下,

  1. 在Scala中,方法和函数几乎可以等同,只是函数的使用方式更加的灵活多样.
  2. 函数式编程是从编程方式(范式)的角度来谈的,可以这样理解:函数式编程把函数当做一等公民,充分利用函数,支持的函数多种使用方式
  3. 面向对象编程是以对象为基础的编程方式.
  4. 在Scala中函数式编程和面向对象编程融合在一起了

Scala 中的函数

def 函数名([参数名:参数类型],...)[[:返回值类型]=]{
语句...
return 返回值(一般使用自动推测机制,进行返回值的返回)
}

  1. 函数声明关键字为def(definition)
  2. [参数名:参数类型],...:表示函数的输入(就是参数列表)可以没有,如果有,多个参数使用逗号间隔
  3. 函数中的语句:表示为了实现某一功能代码块
  4. 函数可以有返回值,也可以没有
  5. 返回值形式1: :返回值类型 =
  6. 返回值形式2: = 表示返回值类型不确定,使用类型推导完成
  7. 返回值形式3: 表示没有返回值,return不生效
  8. 如果没有return 默认以执行到最后一行的结果作为返回值

你可能感兴趣的:(Scala学习笔记-Day03)