函数是第一等公民
- 在scala中,函数是第一等公民
- Scala中,函数和变量有同等的位置,或者说函数也是一种变量。
- Scala中的函数可以作为实参传递给另一个函数;
- 函数可以作为返回值;
- 函数可以赋值给变量(这个变量需符合函数的类型的变量);
- 函数可以存储在数据结构之中。
⚠️函数如同普通变量一样,也具有函数的类型。
函数类型
-
函数类型格式为:
A=>B
表示一个接受类型A的参数,并返回类型B的函数 -
如
Int => String
,把整形数映射为String类型的函数类型。
高阶函数
- 接受的参数是一个函数,或者返回值是一个参数,或者两者皆有之的函数,称为高阶函数。
例如:下列函数是以另一个函数(f)作为参数接入
def operate(f:(Int,Int) => Int ) = {
f(4,4)
}
- ⚠️f函数是以两个int类型的值作为参数,并返回一个int值
匿名函数
例如:
def greeting( ) = (name:String) => {"hello" + " " + name}
匿名函数也称为函数常量,也称函数文字量(类比String)。
定义格式:
(形参列表) => {函数体}
如:
(x:Int, y:Int) => x+y
val fun = (x:Int, y:Int) => x+y
var funr = (x:Int, y:Int) => x+y
上面三句都是可以使用的。
fun不能重新赋值,funr可以赋值其他的类型为(Int, Int)=>Int的函数。
代码:
package com.leili.scala
object Function {
def main(args: Array[String]): Unit = {
var x = (x: Int, y: Int) => {
x + y}
println(x(1,1))
}
}
输出:4