这是一种奇怪的情况,其中方法参数名称显然被另一个 A1 => B1
类型的符号(哪个?)遮蔽了。 :
object OddBug extends scala.swing.Action(null) {
def apply() = ()
def foo(default: String): scala.swing.Component = {
val res = new scala.swing.TextField(16)
res.listenTo(res)
res.reactions += {
case scala.swing.event.EditDone(_) =>
if (res.text.isEmpty) res.text = default // !
}
res
}
}
编译器说:
[error] ...: type mismatch;
[error] found : A1 => B1
[error] required: String
[error] if (res.text.isEmpty) res.text = default
[error] ^
这是编译器(Scala 2.10.3)中的错误吗?既然可以引用
default
在 react 之外,我怀疑是PartialFunction
的问题.解决方法如下:
def foo(default: String): scala.swing.Component = {
val res = new scala.swing.TextField(16)
res.listenTo(res)
def fixDefault: String = default
res.reactions += {
case scala.swing.event.EditDone(_) =>
if (res.text.isEmpty) res.text = fixDefault
}
res
}
最佳答案
根据@travis-brown 的说法,这可能是对部分函数文字进行去毛化的泄漏。提交为 SI-8329 .
关于scala - A1 类型的神秘成员 "default"=> B1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21955454/