首页  

Scala 函数式编程     所属分类 scala 浏览量 302
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 函数