2
Пусть я определяю zipWith
так:Как устранить несоответствие этого типа?
def zipWith[A](f:(A, A) => A)(xs:Iterable[A], ys:Iterable[A]): Iterable[A] =
(xs, ys).zipped map f
Теперь я хотел бы использовать для архивирования матрицы так:
type Matrix = Vector[Vector[Int]]
val zipMatrix: ((Int, Int) => Int) => Matrix => Matrix => Matrix = f =>
zipWith(zipWith(f))
Однако я получил ошибку:
<console>:15: error: type mismatch;
found : (Iterable[Iterable[Int]], Iterable[Iterable[Int]]) => Iterable[Iterable[Int]]
required: Matrix => (Matrix => Matrix)
(which expands to) scala.collection.immutable.Vector[Vector[Int]] => (scala.collection.immutable.Vector[Vector[Int]] => scala.collection.immutable.Vector[Vector[Int]])
Почему не Vector[Vector[Int]]
соответствует Iterable[Iterable[Int]]
? Как исправить эту ошибку?
Спасибо, но я хотел бы получить более общее решение. Чем больше общее, тем лучше :) – Michael
Хорошо, тогда, возможно, вам следует определить тип матрицы более «общий»? type Matrix = Iterable [Iterable [Int]]? – Nyavro
Возможно. Но что не так с Vector [Vector [Int]] '? Предположим, я не могу изменить тип «Матрица». – Michael