如何在Scala中为Ordered [A]类型的数组元素赋值?

时间:2015-10-08 17:35:12

标签: scala

我在过去的半个小时里一直在努力争取以下代码:

class X[A <% Ordered[A]] {
  var x : A = null
}

我理解A可以延长AnyVal而不是AnyRef,所以我可以使用像

这样的解决方案。
class X[A <% Ordered[A] with AnyRef] {
  var x : A = null
}

但这似乎也不起作用。

我应该怎么做?我不想在这里使用选项。

编辑: 我真正想要的是一种方法:

class X[A <% Ordered[A]] {
  val array : Array[A] = ...
  array(0) = null
}

2 个答案:

答案 0 :(得分:3)

为该类型添加下限>: Null。这意味着NullA的子类型,因此A可以将null作为其值:

class X[A >: Null <% Ordered[A]] {
  var x : A = null
}

答案 1 :(得分:3)

你可以写:

make all-gcc

这样可以获得A的默认值:

class X[A <% Ordered[A]] {
  var x : A = _
}

不确定这是否适合您的使用案例;另见Kolmar的回答。