scala ジェネリックとデフォルトのパラメーター値についていくつか質問があります。
次のクラス定義があるとします (ここで、Stack[E] は特性です)。
class ImmutableStack[E](capacity: Int = 10, elems: Array[E] = new Array[E](capacity))(implicit ev: ClassTag[E]) extends Stack[E]
そのコードをコンパイルしようとすると、次の 2 つのエラーが発生します。
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] {
^
誰かが私に説明できますか:
- コンストラクター定義の他のパラメーターで容量パラメーターを使用できないのはなぜですか?
ev
デフォルトのパラメータ値でClassTag を使用できないのはなぜnew Array[E](capacity)
ですか?
elem パラメータのデフォルト値を削除すると、すべて正常に動作します。
ご回答ありがとうございます。