我认为这可能与无形库有关。
我正在使用无形将匿名类转换为闭包。这需要使用hlisted
fromFnHListerAux
特征。
我想要做的就是摆脱传入的虚拟函数,并在这个函数周围返回一个闭包,它具有与F
. 如果没有异步执行的匿名类,这将很容易。有没有办法解决这个问题?
def async[F, A <: HList, R](
shell: Shell,
success: F,
failure: FunctionTypes.Failure,
dummy: F)(implicit h: FnHListerAux[F, A => R],
u: FnUnHListerAux[A => R, F]): F =
{ (args: A) =>
require(shell != null, "Shell cannot be null")
require(shell.getDisplay() != null, "The shell must have a display")
val display = shell.getDisplay()
display.asyncExec(new Runnable() {
def run(): Unit = {
try {
success.hlisted(args)
} catch {
case e: Throwable =>
failure(e)
}
}
})
dummy.hlisted(args)
}.unhlisted