Scala中Lambda函数的输入参数

时间:2018-06-10 07:45:44

标签: scala lambda types

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

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

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

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

我怎么处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

适用于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)