概述
函数是第一等公民,在Scala中,函数就像普通变量一样,同样也具有函数的类型。
Scala语言支持
1 把函数作为实参传递给另外一个函数
2 把函数作为返回值
3 把函数赋值给变量
3 把函数存储在数据结构里
函数类型
在Scala语言中,函数类型的格式为A=>B,表示一个接受类型A的参数,并且返回类型B的函数
Int => String 是把整型映射为字符串的函数类型
函数的定义
def 函数名(参数名:参数类型) :返回值类型 = {}

方法体内最后一行为返回值,不需要使用return
package com.bx.helloworldobject HelloWorld {def main(args: Array[String]): Unit = {println(add(1, 2))}def add(x: Int, y: Int): Int = {x + y}}
当函数没有参数的使用,调用函数可以省略括号
object HelloWorld {def main(args: Array[String]): Unit = {print(isTest)}def isTest() = true}
默认参数
子函数定义是,允许指定参数默认值默认值
object HelloWorld {def main(args: Array[String]): Unit = {setAge()}def setAge(age:Int = 18):Unit={print(age)}}
可变参数
object HelloWorld {def main(args: Array[String]): Unit = {print(sum(1,2,3,4,5))}def sum(numbers: Int*) = {var result = 0for (number <- numbers) {result += number}result}}
高阶函数
函数作为形参或返回值的函数,称为高阶函数
匿名函数(Anonymous Function)
匿名函数就是函数常量,也称为函数文字量(Functopn Literal)
在Scala 里 ,匿名函数的定义格式为
(形参列表) =>{函数体}
柯里化
柯里化函数把具有多个参数的函数转换为一条函数链,每个节点都是单一参数
递归函数(Recursive Function)
在函数式编程中是实现循环的一种技术。
