Scala中的部分应用函数

部分应用函数

部分应用的函数实际上是那些允许您使用部分参数来实现函数调用的函数,即,在函数调用中仅使用几个值,而使用剩余值形成一个公共调用启动。

这是一个有点难懂的概念,为了理解它,我们举个例子。假设你定义了需要找到所有学生的百分比。定义一个通用函数,该函数接受两个参数,共计获得的标记和标记,并查找百分比。对于一个班级,总分数是相同的。传统的方法是将完整的参数传递给函数的每个调用。但是,使用部分应用的函数,您可以将一个参数作为预定义的参数放置,该参数将在函数调用中使用其值作为参数。正如我们的示例一样,名为 ninth 的 percentage 方法的初始化使用 total marks 参数的初始值进行,该参数将其定义为部分应用的函数。

语法:

    val pAfName = funcName(arg1Val, _ : datatype);
    pAfName(arg2Val)

说明:

此语法用于初始化函数funcName的pAfName变量,该变量定义了arg1Val的部分自变量。当仅使用arg2Val调用该函数时,此值可用于以后的代码。

示例

object myClass {
    def percentage(totalMarks: Int, marksObtained: Int) = {
      println("变现百分比:");
      println( ((marksObtained*100)/totalMarks) + " %")
   }
   
   def main(args: Array[String]) {
      val  ninth = percentage(350 , _ : Int)
      println("Student 1")
      ninth( 245 )
      println("Student 2")
      ninth( 325 )
      println("Student 3")
      ninth( 102 )
   }   
}

输出结果

Student 1
变现百分比:
70 %
Student 2
变现百分比:
92 %
Student 3
变现百分比:
29 %

代码说明:

上面的代码基于我们在本教程中讨论的示例。我们制作了一个函数百分比,用于打印学生的百分比。此函数采用两个参数totalMarks和marksObtained。但是对于一组功能,totalMarks将相同。在这种情况下,我们定义了一个名为ninth的函数,该函数的值为350。并且该ninth函数使用了三次,并带有不同的参数,这些参数将打印计算的结果。