Core concept

class Meters(val m: Double) extends AnyVal {
  def +(o: Meters) = new Meters(m + o.m)
}
Advertisement

How it works

Boxing in some cases (arrays, pattern match). Not silver bullet.

Advertisement

Trade-offs + gotchas

Type-safe wrappers without perf cost.