【发布时间】:2011-12-10 01:38:19
【问题描述】:
我对 Scala 还很陌生,仍然对其复杂的类型系统感到困惑。
我尝试解决以下问题。我想设计作为可变双向链表成员的类(以及更复杂的数据结构,如堆)。当然,我的目标是能够在恒定时间内从数据结构中删除对象。
我设计了以下特征:
trait DLLMember {
var next: DLLMember = this
var prev: DLLMember = this
...
}
还有一些用于在列表中添加和删除对象的额外方法。
问题是,当我在实际课堂上时,说:
class IntInDL(val v: Int) extends DLLMember
在解析我的列表时,IntInDL.next 会返回一个 DLLMember 类型而不是 IntInDL,我必须对其进行强制转换才能检索值:这不好......
有没有办法利用 Scala 的类型系统来保证我的工作类型安全?
【问题讨论】:
标签: scala