Scala 中的高阶函数
如果一个函数包含其他函数作为参数或返回一个函数作为输出,则该函数称为函数函数,即与其他函数一起操作的函数称为高阶函数。值得知道的是,这个高阶函数也适用于以函数为参数或返回函数作为结果的函数和方法。这是可行的,因为 Scala 的编译器允许将方法强制转换为函数。
关于高阶函数的一些要点:
- 高阶函数是可能的,因为 Scala 编程语言将函数视为一等值,这意味着与其他一些值类似,函数甚至可以作为参数传递或作为输出返回,这有助于提供可调整的代码编写方法。
- 它有利于生成函数组合,其中功能可能由另一个功能组成。函数组合是组合方法,其中一个函数显示两个组合函数的使用。
- 它在创建 lambda 函数或匿名函数方面也是建设性的。匿名函数是没有名称的函数,虽然执行起来像函数。
- 它甚至被用于最小化程序中的冗余代码行。
现在,让我们看一些例子。
- 例子 :
// Scala program of higher order // function // Creating object object GfG { // Main method def main(args: Array[String]) { // Displays output by assigning // value and calling functions println(apply(format, 32)) } // A higher order function def apply(x: Double => String, y: Double) = x(y) // Defining a function for // the format and using a // method toString() def format[R](z: R) = "{" + z.toString() + "}" }
输出:{32.0}
这里,apply函数包含另一个函数x ,其值为y ,并将函数x 应用于 y。
- 例子 :
// Scala program of higher order // function // Creating object object GfG { // Main method def main(args: Array[String]) { // Creating a list of numbers val num = List(7, 8, 9) // Defining a method def multiplyValue = (y: Int) => y * 3 // Creating a higher order function // that is assigned to the variable val result = num.map(y => multiplyValue(y)) // Displays output println("Multiplied List is: " + result) } }
输出:Multiplied List is: List(21, 24, 27)
这里, map是一个函数,它接受另一个函数,即 (y => multiplyValue(y)) 作为参数,所以它是一个高阶函数。