斯卡拉 |函数组成
函数组合是一种函数与其他函数混合的方式。在组合过程中,一个函数持有对另一个函数的引用以完成其任务。
有一些不同的方式可以进行函数组合,如下所示:-
- 撰写: 组合方法适用于val函数。
句法 :
(function1 compose function2)(parameter)
在上面的语法中,function2 首先使用传递的参数 & 然后传递,然后返回要传递给 function1 的值。
示例 1:
// A Scala program to illustrate
// compose method with val function
// Creatin object
object GFG
{
// Main method
def main(args: Array[String])
{
println((add compose mul)(2))
// adding more methods
println((add compose mul compose sub)(2))
}
val add=(a: Int)=> {
a + 1
}
val mul=(a: Int)=> {
a * 2
}
val sub=(a: Int) =>{
a - 1
}
}
输出 :
5
3
在上面的例子中,首先调用 mul函数得到 4(2 * 2),然后调用 add函数得到 5(4 + 1)。同样 (add compose mul compose sub)(2) 将打印 3 (step1 : 2 – 1 = 1, step2 : 1 * 2 = 2, step3 : 2 + 1 = 3)。
句法 :
(function1 andThen function2)(parameter)
在上面的语法中,function1 首先使用传递的参数 & 然后传递,然后返回要传递给 function2 的值。
或与以下相同:
function2(function1(parameter))
示例 2:
// A Scala program to illustrate
//andThen method with val function
// Creating object
object GFG
{
// Main method
def main(args: Array[String])
{
println((add andThen mul)(2))
// Adding more methods
println((add andThen mul andThen sub)(2))
}
val add=(a: Int)=> {
a + 1
}
val mul=(a: Int)=> {
a * 2
}
val sub=(a: Int) =>{
a - 1
}
}
输出 :
6
5
在上面的例子中,首先添加函数调用我们得到 3(2 + 1),而不是调用 mul函数得到 6(3 * 2)。类似地 add (andThen mul andThen sub)(2)) 将打印 5 (step1 : 2 + 1 = 3, step2 : 3 * 2 = 6, step3 : 6 – 1 = 5)。
- 函数组合更像是将方法组合成另一个方法或传递给其他方法。要对方法进行更多控制,我们可以使用以下更多方法:-
- 将方法传递给方法: 方法被传递给其他方法。
句法 :
function1(function2(parameter))
它的工作方式与 compose 函数相同,但它适用于 def 和 val 方法。
示例 3:
// A Scala program to illustrate
// passing methods to methods
// Creating object
object GFG
{
// Main method
def main(args: Array[String])
{
println(add(mul(2)))
// Adding more methods
println(add(mul(sub(2))))
}
val add=(a: Int)=> {
a + 1
}
val mul=(a: Int)=> {
a * 2
}
val sub=(a: Int) =>{
a - 1
}
}
输出 :
5
3
在上面的例子中,首先调用 mul函数得到 4(2 * 2),然后调用 add函数得到 5(4 + 1)。同样 add(mul(sub(2)) 将打印 3 (step1 : 2 – 1 = 1, step2 : 1 * 2 = 2, step3 : 2 + 1 = 3)。