递归值需要类型-Scala Swing

递归值需要类型-Scala Swing,swing,scala,Swing,Scala,我有一个带有面板的简单应用程序,我想在单击它时暂停并重新开始绘制 object ModulusPatterns extends SimpleSwingApplication { var delay_ms = 200 def top = new MainFrame { contents = panel } val panel = new Panel { override def paintComponent(g: Graphics2D) { /* draw st

我有一个带有面板的简单应用程序,我想在单击它时暂停并重新开始绘制

object ModulusPatterns extends SimpleSwingApplication {
  var delay_ms = 200

  def top = new MainFrame {
    contents = panel
  }

  val panel = new Panel {
    override def paintComponent(g: Graphics2D) { /* draw stuff */ }
    listenTo(mouse.clicks)
    reactions += {
      case e: MouseClicked => {
        val r: Boolean = repainter.isRunning
        if (r) repainter.stop() else repainter.start()
      }
    }
  }

  val repainter = new Timer(delay_ms, new ActionListener {
    def actionPerformed(e: ActionEvent) {
      panel.repaint
    }
  })

  repainter.start()
}
我在
val r
定义行上得到一个编译错误:

error: recursive value repainter needs type
val r: Boolean = repainter.isRunning
据我所知,我没有在这里做任何事情。是虫子吗?有解决办法吗

据我所知,我没有在这里做任何事情


是的,您是:
panel
的定义是指
repainer
,而
repainer
的定义是指
panel
。因此没有bug,您确实需要为它们指定类型。

似乎我只需要指定
面板
重新安装
中的一个的类型。编译器告诉我问题出在
val r=…
行,这让我有点困惑。我感到惊讶的是,它不能在这里推断类型本身。