官术网_书友最值得收藏!

1.2.3 類型擦除

但是在使用關聯類型的時候需要注意,當聲明一個使用了關聯屬性的協議對象作為屬性時,會先出現no initializers的提示,接著會提示error: protocol 'HTNState' can only be used as a generic constraint because it has Self or associated type requirements。其意思是HTNState協議只能作為泛型約束使用,因為它包含了Self或關聯類型。

代碼如下:

class stateDelegate<T> {
    var state: T
    var delegate: HTNState
}

那么這個問題該如何處理呢?答案是通過類型擦除來解決,添加一個中間層在代碼中,讓這個抽象的類型具體化。實際上在Swift的標準庫里就有對類型擦除的運用,比如AnySequence協議。

主站蜘蛛池模板: 巩义市| 河曲县| 龙山县| 民县| 黄浦区| 阳新县| 广河县| 田阳县| 大城县| 东阳市| 山阳县| 太谷县| 尼勒克县| 綦江县| 新闻| 宣化县| 鄂伦春自治旗| 平和县| 抚远县| 宜丰县| 右玉县| 确山县| 云浮市| 颍上县| 衡阳县| 收藏| 厦门市| 桃江县| 宁陵县| 东至县| 措美县| 登封市| 象山县| 娄烦县| 仁寿县| 北碚区| 龙南县| 常宁市| 元朗区| 南丹县| 尚志市|