菜鸟理解的Scala高阶函数

Scala中的高阶函数,主要包含三种:

  1. 函数的参数是函数。
  2. 函数的返回值是函数。
  3. 函数的参数和返回值都是函数。

下面通过三种不同的函数形式,来实现阶乘。

1、函数的参数是函数    已知函数1实现阶乘计算,在函数2中使用函数1

    def fun1(i: Int): Int = {
      if (i == 1)
        i
      else
        i * fun1(i - 1)
    }

    def fun2(f: (Int) => Int, i: Int) = {
      val result = f(i)
      println(result)
    }

    fun2(fun1, 5);

2、函数的返回值是函数      已知函数1实现阶乘计算,在函数2中使用函数1,并作为结果返回

    def fun1(i: Int): Int = {
      if (i == 1)
        i
      else
        i * fun1(i - 1)
    }

    def fun2(): (Int) => Int = {
      //参数在调用fun2时传递给fun1
      fun1
    }
    println(fun2()(5))

3、函数的参数和返回值都是函数        已知函数1打印测试信息,函数2实现计算,函数3调用函数1,2

    def fun1(): Unit = {
      println("this is high function od the scala")
    }

    def fun2(i: Int): Int = {
      if (i == 1)
        i
      else
        i * fun2(i - 1)
    }

    def fun3(f: () => Unit): (Int) => Int = {
      //调用函数f需要写上(),执行fun1()
      f()
      fun2
    }

    println(fun3(fun1)(5))

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章