Scala:声明一个变量,用于保存函数(lambda)而不立即赋值

时间:2017-09-02 10:56:34

标签: scala

我想声明一个可以保存函数的var,但我想稍后再分配该函数。

我如何声明这样的变量,例如何时没有参数并且什么也没有返回?

我尝试了这个但是没有接受:

private var myFunction : ()

稍后在代码中,我会像这样分配代码,我想:

myFunction = () => { doSomething() }

1 个答案:

答案 0 :(得分:5)

像这样:

  def doSomething(): Unit = ???

  class A {
    private var m1: Function0[Unit] = _

    // later down the line
    m1 = () => { doSomething() }

    private var m2: () => Unit = _

    // later down the line
    m2 = () => { doSomething() }
  }

只需使用函数文字语法或FunctionN个特征之一声明函数的类型。

修改

您的错误是使用无效语法声明myFunction

语法为[visibility] {var|val|lazy val} {variable-name}[:<variable-type>}[=<value]

其中[]表示可选部分和{}必填部分。

如果省略可见性,则假定为public。至于下划线,您可以检查其含义in this SO post