首页 > 解决方案 > Scala 中 Lambda 函数的输入参数

问题描述

addChangeListener在我的 Scala 程序中使用 Java Swing API。ScalaFiddle 的编译器在以下代码中指示错误:

spinner_1.addChangeListener(e => {
              ...
})

错误:缺少参数类型 spinner_1.addChangeListener(e => {

我试图写e : ChangeListener,但它并没有解决这个问题。我在 Scala 的文档中没有找到有用的东西。

我该怎么办?

标签: scalalambdatypes

解决方案


它适用于Scala 2.12。但是如果你必须使用像 2.11 这样的旧版本,你可以使用隐式转换。这是一个例子:

import javax.swing.JTabbedPane
import javax.swing.event.{ChangeEvent, ChangeListener}

implicit def convertToChangeListener(f: ChangeEvent => Unit): ChangeListener =
  new ChangeListener {
    override def stateChanged(e: ChangeEvent): Unit = f.apply(e)
  }

val listener: ChangeListener = (e: ChangeEvent)  => ...

new JTabbedPane().addChangeListener(listener)

推荐阅读