一、函数
1、Scala中的函数
在Scala中,函数处于很重要的位置。
下面是几种函数定义的方式:
def checkType(): String = "123"
def say()="hello"
def sayHi(): Unit ={
println("hi")
}
def getAge1(a:Int):Int={
a
}
def getAge3(a:Int):Int=a
2、匿名函数
scala> Array(1,2,3).map((x:Int)=>x*4)
//res0: Array[Int] = Array(4, 8, 12)
//匿名函数
//(x:Int)=>x*4
//map方法接收一个函数参数,就可以把上面的匿名函数作为参数传递给map方法
3、带函数参数的函数,即:高阶函数
- 示例1:
(1)首先,定义一个最普通的函数
(2)再定义一个高阶函数
(3)分析这个高阶函数调用的过程
scala> def someAction(f:(Double)=>Double)=f(10)
//someAction: (f: Double => Double)Double
scala> someAction(scala.math.sqrt)
//res1: Double = 3.1622776601683795
总结:f是函数的参数,传入的scala.math.sqrt是一个数学函数
- 示例2:
在该例中,首先定义了一个普通的函数mytest,然后定义了一个高阶函数myFunction。myFunction接收三个参数:第一个f是一个函数参数,第二个是x,第三个是y。
而f是一个函数参数,本身接收两个Int的参数,返回一个Int的值。
二、闭包
闭包就是函数的嵌套。
在一个函数定义中,包含另外一个函数的定义,并且在内函数中可以访问外函数中的变量。