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
,