2016-03-24 17 views
1

プロトコルに準拠した変数が必要ですが、迅速なコンパイラはプロトコルが確認していないことを通知します。あなたのaが明確Aとして入力されたのではなく、AAと推測されていないため、スウィフトプロトコル準拠

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() 
} 

答えて

3

あなたはプロトコルに準拠していません。それを明示的にする。

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

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

varが唯一getあり、そして何setを持っていないとして、あなたは、実装にプロトコルでvarletを使用しているという事実は、赤いニシンです。