scala
の汎用ユーティリティを使用して、特定のコードロジックn
を再試行します。私は私がどのようにJava
プログラムJavaのコードブロックをScalaオブジェクトに渡す
private void myMethod(int x) {
try {
// Code block to Retry 10 times
...
} catch(Exception ex) {
System.out.println("Error: " + ex.getMessage());
}
}
に、この機能を拡張したいと思います
class RetryCodeTest {
test("success on 1st retry") {
var i = 0
val result = retry(5) {
i = i + 1
i
}
assert(result==1)
}
}
:
RetryCode.scala
object RetryCode {
def retry[T](timesRetry: Int)(block: => T): T = {
def doBlock() = block
breakable {
for (i <- 0 until timesRetry) {
try {
...
doBlock()
} catch {
...
}
}
}
}
}
Scala
におけるテスト・ユニット01のブロックを送信するコードをRetryCode
にコピーScala
のオブジェクトですか?
ScalaクラスでJavaクラスのインスタンスを作成しますか?ループ内で 'myMethod'を呼び出しますか? –
残念ながら、ScalaオブジェクトはScalaコードベースのどこにも頻繁に使用されるため、これはオプションではありません。 – AngryPanda
あなたはそうではありません。あなたはラムダやインターフェイスで何かをします。 –