入力と同じ型のコレクションを返すジェネリック メソッドがあります。
def removeN[A, C <: Seq[A]](s: C, n: Int): C = {
s.take(n) ++ s.drop(n + 1) // Sample operation
}
しかし、このコードはコンパイルされません:
エラー:(34, 15) タイプが一致しません。見つかった: Seq[A] 必要: C s.take(n) ++ s.drop(n + 1)
C
を明確に表している場合、これはどのように可能Seq[A]
ですか?Seq[A]
この種の連結は、サブタイプではなく、常に親タイプのインスタンスを返すということC
ですか? 型のコレクションを生成するためにコードを書き直すことはできC
ますか?- これは、一般的な入力と同じコレクション型 (私の場合は のサブタイプ) を返すジェネリック メソッドを定義する正しい方法
Seq
ですか?
スカラ 2.12.4