scala - Scala 中 Lambda 函数的输入参数
问题描述
我addChangeListener
在我的 Scala 程序中使用 Java Swing API。ScalaFiddle 的编译器在以下代码中指示错误:
spinner_1.addChangeListener(e => {
...
})
错误:缺少参数类型 spinner_1.addChangeListener(e => {
我试图写e : ChangeListener
,但它并没有解决这个问题。我在 Scala 的文档中没有找到有用的东西。
我该怎么办?
解决方案
它适用于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)
推荐阅读
- python - 'numpy.int64' 类型的 TypeError 对象在预测模型时没有 len()
- javascript - 节点服务器无法访问对象块(面向对象的 javascript)
- vue.js - 如何显示由一个模型中的另一个字段过滤的 2 个列表
- r - 如何在geom_text和stat_cor之间的ggplot中进行字体匹配?
- excel - 如何在 Excel 电子表格中将 dd:hh:mm:ss 格式时间转换为秒
- python - Popen 子进程进程在特定回复后停止阅读
- model-view-controller - 有没有人建议我可以做些什么来修复在 VS2017 Web Deploy 上找不到这个错误“System.Web”?
- model-view-controller - Aria 下拉 NVDA 显示“编辑空白”
- json - 读取 json 并将密钥存储为 bash 变量
- css - SVG:悬停不改变儿童笔画