zoukankan      html  css  js  c++  java
  • 类型擦除

    类型擦除

    但是在使用关联类型的时候需要注意当声明一个使用了关联属性的协议作为属性时,比如下面的代码:

    class stateDelegate<T> {

        var state: T

        var delegate: HTNState

    }

    <> {

    varvar

    先会提示 no initializers 的错误,接着会提示 error: protocol ‘HTNState’ can only be used as a generic constraint because it has Self or associated type requirements 。意思是 HTNState 协议只能作为泛型约束来用,因为它里面包含必需的 self 或者关联类型。

    那么该如何处理呢?这里需要通过类型擦除来解决,主要思路就是加个中间层在代码中让这个抽象的类型具体化。实际上在 Swift 的标准库里就有类型擦除很好的运用,比如 AnySequence 的协议。

     

     

    https://ming1016.github.io/2018/01/24/why-swift/

  • 相关阅读:
    整理牙刷
    color 圆盘染色
    数论の一波流[长期更新]
    生成树
    一维黑白棋
    Factorials
    平面分割问题
    poj1183 反正切函数
    烽火传递
    校门外的树
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10305705.html
Copyright © 2011-2022 走看看