我有一些关于 scala 泛型和默认参数值的问题。
假设,我有以下类定义(其中 Stack[E] 是一个特征)
class ImmutableStack[E](capacity: Int = 10, elems: Array[E] = new Array[E](capacity))(implicit ev: ClassTag[E]) extends Stack[E]
当我尝试编译该代码时,它给出了两个错误:
scala: cannot find class tag for element type E
class ImmutableStack[E <: Any](capacity: Int = 10, elems: Array[E] = new Array[E](capacity))(implicit ev: ClassTag[E]) extends SedgewickStack[E] {
^
和:
scala: not found: value capacity
class ImmutableStack[E <: Any](capacity: Int = 10, elems: Array[E] = new Array[E](capacity))(implicit ev: ClassTag[E]) extends SedgewickStack[E] {
^
有人可以解释一下吗:
- 为什么容量参数不适用于构造函数定义中的其他参数?
- 为什么 ClassTag
ev
不可用于默认参数值,即new Array[E](capacity)
?
当我删除 elem 参数的默认值时 - 一切正常。
提前感谢您的任何回答。