Scala单元到匿名类

Hak*_*kar 2 closures scala anonymous-class

是否可以将Unit转换为匿名类的方法?

代替:

addSelectionListener(new SelectionListener{
    def widgetSelected(SelectionEvent event): Unit = {
       //...
    }
}
Run Code Online (Sandbox Code Playgroud)

对此:

addSelectionListener toAnonymousClass(classOf[SelectionListener], { 
    /* .. */ 
})
Run Code Online (Sandbox Code Playgroud)

如果没有任何库可以做到这一点,我将如何制作一个?可能吗?

Nik*_*kov 5

我相信以下隐式转换应该达到你想要的结果:

implicit def selectionListener (f: SelectionEvent => Unit) = 
  new SelectionListener {
    def widgetSelected(event: SelectionEvent) {
      f(event)
    }
  }
Run Code Online (Sandbox Code Playgroud)

它会自动转换类型的函数文本SelectionEvent => UnitSelectionListener这样你就可以使用addSelectionListener方法如下所示:

addSelectionListener { event: SelectionEvent =>
    /* .. */ 
}
Run Code Online (Sandbox Code Playgroud)