Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

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