Swift протокол соответствия

Я хочу переменную, которая соответствует протоколу, но быстрый компилятор говорит мне, что протокол не подтверждает.

protocol A {}
protocol B {
    var a : A { get }
}
class AA : A {}
// Type 'BB' does not conform to protocol 'B'
class BB : B { 
    let a = AA()
}

1 ответ

Решение

Вы не соответствуете протоколу, потому что ваш a не четко обозначен как A, а скорее выводится как AA, Сделайте это явным.

protocol A {}
protocol B {
    var a : A { get }
}
class AA : A {}

class BB : B {
    let a: A = AA() // Explicitly typed here.
}

Тот факт, что вы использовали var в протоколе и let в реализации красная сельдь, так как вар get только и не имеет set,

Другие вопросы по тегам