Scala 2.10は、値クラスのサポートを追加しました。値クラスの制限の1つは、「型が値クラスではないpublic、valパラメーターを1つだけ持つプライマリコンストラクターのみが必要である」ことです。
その単一のvalパラメーターにタプルを使用することの欠点はありますか?
たとえば、開始と終了の期間を表す値型を作成したいと思います。2つのパラメーターを持つことができないため、その範囲をとして表すことができます(Long, Long)
。
case class Period(timeRange: (Long, Long)) extends AnyVal {
def start: Long = timeRange._1
def end: Long = timeRange._2
def contains(time: Long): Boolean = time >= start && time < end
}
このアプローチを使用しても、値クラスのメモリ割り当てのメリットは得られますか?