나는 셰이프가없는 라이브러리에서 가능할 수 있다고 생각합니다.비동기 익명 클래스를 함수로 바꾸기
나는 무명 클래스를 클로저로 변환하기 위해 무형 속성을 사용하고 있습니다. 이 경우 FnHListerAux
특성의 hlisted
을 사용해야합니다.
내가 원하는 것은 전달 된 더미 함수를 없애고 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
그런 무의미한 물건이 필요한 경우 알고리즘에 심각한 문제가 있어야합니다. 필요한 것을 설명해보십시오. –
물론, 좋은 생각 일 것입니다. 나는 스칼라에 대해 아주 새롭다. 나는 아직도 당신이 실제로 함수의 몸체를 대체 할 수 있는지 궁금하다. 그러나 나의 실제 문제에 대한 해결책은 내 지식 수준보다 높은 무형의 라이브러리에 놓여있을 가능성이 높습니다. 그리고 나는 여전히 그 본성을 이해하려고 노력하고 있습니다. – Hakkar