将带参数的方法调用转换为不带参数的函数

时间:2017-08-27 18:55:57

标签: scala function methods

从不带参数的方法调用创建函数需要以下语法: -

  

val d =显示_

如何使用参数进行方法调用同样的事情。 请在下面找到示例代码。

package paf

/**
  * Created by mogli on 8/27/17.
  */
object PafSample {

  def display(): Unit ={
    println("display is a no argument method")
  }

  def evenOdd(input : Int) : Unit = if(input % 2 == 0) println(s"$input is even")  else println(s"$input is odd")

  def main(args: Array[String]): Unit = {

    //This is working
    val d = display _
    executeFunction(d)

    //TODO : convert to a function call that takes no arguments,
    //       so that, it can be passed to executeFunction as parameter

    //val e = evenOdd(3) _
    //executeFunction(e)
  }

  def executeFunction[B](f : () => B) : B = {
    println("executing function")
    f()
  }
}

1 个答案:

答案 0 :(得分:0)

那不行。 executeFunction是一个采用函数的方法,该函数接受参数并返回BevenOdd采用Int类型的单个参数,并生成Unit,意为Int => Unit

您需要接受参数:

def executeSingleArgFunction[A, B](a: A)(f: A => B): B = {
    f(a)
}

然后:

executeSingleArgFunction(3)(evenOdd)