scala - A1 类型的神秘成员 "default"=> B1

标签 scala namespaces

这是一种奇怪的情况,其中方法参数名称显然被另一个 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/

相关文章:

facebook - 为非 opengraph 支持的 og :type objects 实现自定义命名空间

scala - 如何在 Play Framework 2.4.2 scala 中正确安排任务?

java - docker-grafana-graphite 中的 Kamon JVM 和操作系统指标

web-services - spray-can webservice 优雅关闭

c# - DirectoryEntry 甚至没有添加命名空间 System.DirectoryServices?

c - dlmopen() 无法解析创建的命名空间中定义的函数符号

scala - Kestrel 函数式编程设计模式的附加值(value)是什么? (斯卡拉)

multithreading - Iterator.continually : special proccessing for the first element

Javascript:当它包含一个点时获取构造函数名称

php - 从 xml 文件中删除 namespace 并另存为新的 XML