其他分享
首页 > 其他分享> > Scala 速通语法(三)| 函数相关

Scala 速通语法(三)| 函数相关

作者:互联网

函数


基本语法

  def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] {
    语句...
    return 返回值
  }

  //[参数名:  参数类型], ...:表示函数的输入(就是参数列表),  可以没有。 如果有,多个参数使用逗号间隔
  //函数中的语句:表示为了实现某一功能代码块
  //函数可以有返回值,也可以没有 
  //返回值形式 1:       : 返回值类型 =
  //返回值形式 2:    =    表示返回值类型不确定,使用类型推导完成
  //返回值形式 3:           表示没有返回值,return  不生效
  //如果没有 return ,默认以执行到最后一行的结果作为返回值
  
object FunDemo01 {
  def main(args: Array[String]): Unit = {
    val n1 = 10 val n2 = 20
    println("res=" + getRes(1, 2, ')'))
  }
  //定义函数/方法
  def getRes(n1: Int, n2: Int, oper: Char) = {
    if (oper == '+') {
      n1 + n2 //返回
    } else if (oper == '-') {
      n1 - n2
    } else {
      //返回 null
      null
    }
  }
}

函数细节

  函数的形参列表可以是多个, 如果函数没有形参,调用时可以不带()
  形参列表和返回值列表的数据类型可以是值类型和引用类型
  Scala 中的函数可以根据函数体最后一行代码自行推断函数返回值类型,那么在这种情况下,return 关键字可以省略
  因为 Scala 可以自行推断,所以在省略 return 关键字的场合,返回值类型也可以省略
  如果函数明确使用 return 关键字,那么函数返回就不能使用自行推断了,这时要明确写成 : 返回类型 =   ,当然如果你什么都不写,即使有 return 返回值为()
  如果函数明确声明无返回值(声明 Unit),那么函数体中即使使用 return 关键字也不会有返回值
  如果明确函数无返回值或不确定返回值类型,那么返回值类型可以省略(或声明为Any)
  Scala 语法中任何的语法结构都可以嵌套其他语法结构(灵活)
    即:函数中可以再声明/定义函数,类中可以再声明类,方法中可以再声明/定义方法
  Scala 函数的形参,在声明参数时,直接赋初始值(默认值),这时调用函数时,如果没有指定实参,则会使用默认值。如果指定了实参,则实参会覆盖默认值
  如果函数存在多个参数,每一个参数都可以设定默认值,那么这个时候,传递的参数到底是覆盖默认值,还是赋值给没有默认值的参数,就不确定了(默认按照声明顺序[从左到右])。在这种情况下,可以采用带名参数
  如果我们希望指定覆盖某个默认值,则使用带名参数即可,比如修改用户名和密码
  递归函数未执行之前是无法推断出来结果类型,在使用时必须有明确的返回值类型
  Scala 函数支持可变参数 可变参数要放到最后
    //支持 0 到多个参数
    def sum(args :Int*) : Int = {
    }
    //支持 1 到多个参数
    def sum(n1: Int, args: Int*) : Int = {
    }

惰性函数


异常

object ScalaExceptionDemo {
  def main(args: Array[String]): Unit = {
    try {
      val r = 10 / 0
    } catch {
      //说明
      //1. 在 scala 中只有一个 catch
      //2. 在 catch 中有多个 case, 每个 case 可以匹配一种异常 case ex: ArithmeticException
      //3. => 关键符号,表示后面是对该异常的处理代码块
      //4. finally 最终要执行的
      case ex: ArithmeticException=> {
        println("捕获了除数为零的算数异常")
      }
      case ex: Exception => println("捕获了异常")
      } finally {
        // 最终要执行的代码
        println("scala finally...")
      }
  println("ok,继续执行~~~~~")
  }
}

标签:return,函数,Scala,语法,参数,类型,返回值,默认值,速通
来源: https://www.cnblogs.com/zhy-god/p/14804733.html