我正在尝试创建一个可以分配函数的变量,但是在分配变量时执行该函数。如何在不执行变量的情况下将函数分配给变量?
object VariableMethod {
def main(args: Array[String]) {
(new VariableMethod).test()
}
}
class VariableMethod {
var method: Unit = _
def f1() {
println("Executing f1")
}
def test() {
method = f1 // Method f1 is invoked on this line, I only want the assignment to occur on this line
println("Is f1 executed before or after this?")
method // I want the f1 method to be invoked only here.
}
}
答案 0 :(得分:1)
当该函数没有args且您想将其分配给val
或var
时,您可以使用_
表示法来表示您想要部分应用它。例如:
object TestFunc{
def f1() = {
"foo"
}
val v1 = f1 _
val v2 = f1
val v3 = v1()
}
在此示例中,v1的类型为() => String
,v2的类型为String
。对于v3
,我们完全应用v1
,最后得到的String
与v2
相同。
答案 1 :(得分:0)
我明白了......
object VariableMethod {
def main(args: Array[String]) {
(new VariableMethod).test()
}
}
class VariableMethod {
var method: () => Unit = _
def f1() {
println("Executing f1")
}
def test() {
method = f1
println("Is f1 executed before or after this?")
method()
}
}