Scalaにおける表明
assert()
def add100(x: Int): Int = { val z = x + 100 assert(z >= 0) // 必ず0以上という表明 z }
ensuring()
def add100(x: Int): Int = { val z = x + 100 z ensuring(_ >= 0) } // ↑こう書けるので、↓こうも書ける def add100(x: Int): Int = x + 100 ensuring(_ >= 0)
assert()もensuring()も失敗すれば、java.lang.AssertionError例外が投げられる。
add100(-101) // java.lang.AssertionError: assertion failed
require()
前提条件のチェックにはrequire()が使える。
失敗すると、java.lang.IllegalArgumentException例外が投げられる。
def minus3(x: Int): Int = { require(x > 3) x - 3 }
minus3(2) // java.lang.IllegalArgumentException: requirement failed