📜  斯卡拉 |函数组成

📅  最后修改于: 2022-05-13 01:55:46.412000             🧑  作者: Mango

斯卡拉 |函数组成

函数组合是一种函数与其他函数混合的方式。在组合过程中,一个函数持有对另一个函数的引用以完成其任务。
有一些不同的方式可以进行函数组合,如下所示:-

  • 撰写:
  • 组合方法适用于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)。

  • andThen : andThen 方法也适用于val函数。
    句法 :
    (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)。