【发布时间】:2014-06-14 01:51:56
【问题描述】:
可以构造subj吗?比如:
trait THasArray[T]
{
val ARRAY_SIZE = 8
val array = Array.fill[T](ARRAY_SIZE)(null)
}
效果不佳 - 编译器抱怨“null”,这是我需要的。我知道 Option,但问题是,这对于普通数组是否可行。
谢谢。
编辑:
谢谢你们,伙计们。 我已经发现了将类标签作为隐式参数传递的技巧。
不过,我已经重新制定了我原来的问题。我只需要将该数组初始化一次,并且永远不会更改。所以这是我的解决方案,它不需要隐式 val 类型标记,而是使用 init 函数来解决问题
trait THasArray[T >: Null]
{
private var table: Seq[T] = null
protected def init(elems: (Int, T)*)(implicit manifest: Manifest[T]) =
{
val size = (elems foldLeft 0)(_ max _._1)
val array = Array.fill[T](size + 1)(null)
elems foreach { x => array(x._1) = x._2 }
table = array
}
}
【问题讨论】:
-
“主题”是什么意思?