Scala 函数式编程
所属分类 scala
浏览量 690
Scala函数是对象
函数式编程中,函数是一等公民函数
函数 可赋给变量
作为 入参 或 返回值
匿名函数
将函数作为参数或返回值的函数称为高阶函数
val add = (x: Int, y: Int) => x + y
add(1,2)
add.apply(1,2)
函数对象扩展FunctionN traits中的一个,例如Function0,Function1等 直到Function22
对于具有两个参数的函数,编译器选择Function2作为底层类型
package scala
trait Function2[@scala.specialized -T1, @scala.specialized -T2, @scala.specialized +R] extends scala.AnyRef {
def apply(v1 : T1, v2 : T2) : R
@scala.annotation.unspecialized
def curried : scala.Function1[T1, scala.Function1[T2, R]] = { /* compiled code */ }
@scala.annotation.unspecialized
def tupled : scala.Function1[scala.Tuple2[T1, T2], R] = { /* compiled code */ }
override def toString() : java.lang.String = { /* compiled code */ }
}
val doubler = (i: Int) => { i * 2 }
def operation(functionparam:(Int, Int) => Int) {
println(functionparam(1,2))
}
val add = (x: Int, y:Int) => { x + y }
operation(add)
val subtract = (x: Int, y:Int) => { x - y }
val multiply = (x: Int, y:Int) => { x*y }
operation(subtract)
operation(multiply)
返回函数
def sayHello() = (name: String) => {"hello" + " " + name}
val hello = sayHello()
hello("scala")
上一篇
下一篇
Scala 构造函数
scala range
Scala 元组
scala Any AnyRef Object AnyVal
Scala 异常
scala 函数