scala函数式编程

什么是函数式编程

在面向对象编程中,我们把**对象传来传去,
那在函数式编程中,我们要做的是把
函数**传来传去,而这个,说成术语,我们把他叫做高阶函
数。
– 在函数式编程中,函数是基本单位,是第一型,他几乎被用作一切,包括最简单的计算,甚至连变量都被计算所取代。在函数式编程中,变量只是一个名称,而不是一个存储单元,这是函数式编程与传统的命令式编程最典型的不同之处。
• 函数式编程的抽象本质则是将函数也作为一个抽象单位,而反映成代码形式,则是高阶函数。

object TestFunc {

  type FilterFunc = Array[String] => Boolean

  //方法返回值是一个函数
  def buildFun():FilterFunc={

    (arrStr:Array[String])=>{
      arrStr(1).equals("0")
    }
  }

  //  def isRight(): FilterFunc ={
  //
  //  }





  def sayMyName(name: String = "Jack"): Unit = {
    println(name)
  }

  def sumMoreParmeters(elem: Int*): Int = {
    var sum = 0
    for (e <- elem) {
      sum += e
    }
    sum
  }

  def add(a: Int, b: Int): Int = a + b

  def add2 = add(_: Int, 4)

  def fac(n: Int): Int = if (n <= 0) 1 else n * fac(n - 1)

  //函数柯里化
  //
  def mulitply(x: Int)(y: Int) = x * y

  def m2 = mulitply(2) _

  val t = () => 333

  def testfun02(fn: () => Int) = {
    println(fn())
    1000

  }

  val d1 = (a: Int) => a + 100

  def testfn1(callback: (Int, Int) => Int) = {
    println(callback(123, 123))
  }

  def add3(x: Int, y: Int, z: Int): Int = {
    def add2(x: Int, y: Int): Int = {
      x + y
    }
    add2(add2(x, y), z)
  }


  def main(args: Array[String]): Unit = {
    println("staty")

    sayMyName("rose")
    val sum: Int = sumMoreParmeters(5, 3, 4, 5, 6, 76)

    println(sum)

    println(add(2, 3))
    println(add2(2))

    val rs: Int = fac(5)
    println(rs)

    val f = (a: Int, b: Int) => {
      println(a * b)
      a + b
    }
    println("=====")
    testfn1(f)
  }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值