scala
에 일반적인 유틸리티가있어 특정 코드 로직 n
번을 다시 시도합니다. Scala
에서Java에서 Scala 객체로 코드 블록을 전달합니다.
RetryCode.scala
object RetryCode {
def retry[T](timesRetry: Int)(block: => T): T = {
def doBlock() = block
breakable {
for (i <- 0 until timesRetry) {
try {
...
doBlock()
} catch {
...
}
}
}
}
}
시험 단위 :
이class RetryCodeTest {
test("success on 1st retry") {
var i = 0
val result = retry(5) {
i = i + 1
i
}
assert(result==1)
}
}
내가
private void myMethod(int x) {
try {
// Code block to Retry 10 times
...
} catch(Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
}
가 어떻게를 수행 Java
프로그램에이 기능을 확장하고 싶습니다 01 블록을 보낸다.코드에서 RetryCode
의 개체는 Scala
입니까?
Scala 클래스에서 Java 클래스의 인스턴스를 만드시겠습니까? 루프 내에서'myMethod'를 호출합니까? –
불행하게도 Scala 객체는 Scala 코드 기반의 다른 곳에서 자주 사용되므로 옵션이 아닙니다. – AngryPanda
그렇지 않습니다. 당신은 람다 (lambda) 나 인터페이스 (interface)로 무엇인가를합니다. –