Я получаю странную ошибку типа, связанные в моем Swift кода:«тип выражения неоднозначный без дополнительного контекста» ошибки в Swift закрытии
типа выражения является неоднозначным без больше контекста.
Это происходит, даже если я предоставляю полную информацию о типе.
Код, воспроизводящий его.
У меня есть 2 структуры:
struct Person{
let name_ : String
let address_ : Address
}
struct Address {
let street_ : String
let city_ : String
}
Я тогда создать структуру, которая содержит 2 функции, чтобы получить и установить address
из Person
:
struct Lens<A,B> {
let extract: (A)->B
let create: (B,A) -> A
}
Когда я пытаюсь создать экземпляр Объект, который получает и устанавливает адрес (в последнем случае он возвращает новое лицо с новым адресом), я получаю ошибку при первом закрытии.
let lens : Lens<Person, Address> =
Lens(
extract: {(p:Person)->Address in
return p.address_}, // here's the error
create: {Person($0.name_,
Address(street_: $1, city_: $0.address_.city_))})
Не только тип параметра первого замыкания указан в типе объектива, но также и в самом закрытии.
Что происходит ????
В закрытии «create:» имеется несколько ошибок: Отсутствующие метки меток («Лицо (имя_: ...) , address_: ...) 'и' street _: $ 1' не имеет смысла, потому что '$ 1' не является строкой. –