从不带参数的方法调用创建函数需要以下语法: -
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()
}
}
答案 0 :(得分:0)
那不行。 executeFunction
是一个采用函数的方法,该函数接受参数并返回B
。 evenOdd
采用Int
类型的单个参数,并生成Unit
,意为Int => Unit
。
您需要接受参数:
def executeSingleArgFunction[A, B](a: A)(f: A => B): B = {
f(a)
}
然后:
executeSingleArgFunction(3)(evenOdd)