引数の事前条件チェック
コンストラクタの引数や関数の引数がある条件を満たしているかの
事前のチェックは、require を使用する方法がある。
scala> def foo(a: Double, b: Double) = { require(b != 0); a / b } foo: (a: Double, b: Double)Double scala> foo(5, 2) res0: Double = 2.5 scala> foo(4, 0) java.lang.IllegalArgumentException: requirement failed at scala.Predef$.require(Predef.scala:145) ..snip..
assert でもよいかもしれないが引数チェックということでは
IllegalArgumentException を投げる require が良さそう。
scala> def bar(a: Double, b: Double) = { assert(b != 0); a / b } bar: (a: Double, b: Double)Double scala> bar(7, 2) res1: Double = 3.5 scala> bar(5, 0) java.lang.AssertionError: assertion failed at scala.Predef$.assert(Predef.scala:89) ..snip..
assert と require は Predef で定義されている