Scala 2.10 增加了对值类的支持。值类的限制之一是它“必须只有一个主构造函数,其中只有一个公共的 val 参数,其类型不是值类。”
对单个 val 参数使用元组有什么缺点吗?
例如,我想创建一个值类型来表示具有开始和结束的时间段。因为我不能有两个参数,所以我可以将该范围表示为(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
}
使用这种方法,我还能获得值类的内存分配优势吗?