在Scala中按名称调用函数

函数按名称调用

默认情况下,以编程语言传递参数的方法是“按值调用”。在这种情况下,参数被传递给一个函数,该函数使它们的副本对它们进行操作。同样在Scala中,按名称调用是默认的参数传递方法。

当程序需要将表达式或代码块作为参数传递给函数时,在Scala中使用按名称调用。在程序中按名称调用传递的代码块只有在被函数调用后才能执行。

语法:

    def functionName(parameter => Datatype){
	    //函数体...包含按名称调用代码块
    }

说明:

语法通过名称函数call初始化调用。这里传递的函数参数是一个函数,数据类型是所调用函数的返回类型。函数主体通过名称调用执行对要求值以提供值的函数的调用。通过使用程序中指定的参数名称来启动该调用。

示例

object Demo {
    def multiply(n : Int) = {
     (14*5);
   }
   def multiplier( t: => Long ) = {
      println("Code to multiply the value by 5")
      println("14 * 5 = " + t)
   }
   def main(args: Array[String]) {
       println("Code to show call by name")
        multiplier(multiply(14))
   }
}

输出结果

Code to show call by name
Code to multiply the value by 5
14 * 5 = 70

代码说明:

上面的代码是按名称显示call使用。该代码将打印乘以5的数字。代码中的数字为14。在从主调用进行函数调用时,该函数将传递给按名称调用函数。在乘法器函数中,它需要执行乘法方法的代码后,将启动in并在其中对值进行评估,以将其返回到打印该值(即70)的调用函数。