Что является причиной ошибки этого типа?
Два вопроса:
Почему этот код не компилируется? яверить (но я не уверен на 100%, возможно, я ошибся), что это типо-корректно.
Что означает сообщение об ошибке? Я запутался, почему ожидаемый тип аргумента_ -> _
(или, может быть, я просто не знаю, что это значит_ -> _
в этом случае). Цель этого вопроса - научиться правильно диагностировать это сообщение об ошибке, если я столкнусь с ним снова в будущем.
Код:
Этот код не может быть скомпилирован с сообщением об ошибке «Невозможно преобразовать значение типа« A -> B »в ожидаемый тип аргумента« _ -> _ »:
class ZipList<A> {
let xs: [A]
init(xs: [A]) {
self.xs = xs
}
func map<B>(f: A -> B) -> ZipList<B> {
return ZipList(xs: self.xs.map(f))
}
}
Дополнительная информация:
Сначала я предположил, что проблема связана с выводом типа, поэтому я попытался записать типы явно, но это также не удалось:
Однако это компилируется просто отлично (единственное отличие от моего оригиналаmap
версия является<B>
перешел кZipList
инициализатор):
func map4<B>(f: A -> B) -> ZipList<B> {
return ZipList<B>(xs: self.xs.map(f))
}