せっかちな人のための Scala第 15 章 演習 10: メソッドに追加assert(n >= 0しfactorialます。factorial(-1)アサーションを有効にしてコンパイルし、例外がスローされることを確認します。アサーションなしでコンパイルします。何が起こるのですか?javapアサーション呼び出しに何が起こったかを確認するために使用します。
私のコード:
object Test {
def factorial(x: Int): Int = {
assert(x >= 0, "Call to factorial must be >= 0!")
x match {
case 0 => 1
case x: Int => x * factorial(x - 1)
}
}
def main(args: Array[String]): Unit = {
factorial(-1)
}
}
scalac最初に でコンパイルし、 を使用して検査しjavap Test、次に で再度コンパイルしscalac -Xelide-below MAXIMUMて同じコマンドで検査しました - 2 つの違いを見つけることができないようです。
プログラムを実行しようとすると、アサーションを使用してコンパイルすると例外がスローされ、アサーションを使用せずにコンパイルするとスタックオーバーフローエラーが発生することは理解していますが、違いがわかりませんjavap...