美文网首页
Swift泛型-关联类型问题

Swift泛型-关联类型问题

作者: zolobdz | 来源:发表于2019-12-25 14:06 被阅读0次

今天写代码遇到一个泛型问题。我简单描述下场景:
对象A和B公用一种类型的属性(或者方法),这时候根据面向协议的原则,将属性抽取成协议,然后再约束泛型。代码如下

struct PageAModel: Rule {
// 对象特异性
}

protocol Rule {
// 共有属性
}

protocol RuleProtocol {
    var items: [Rule] {get}
}

struct PageAViewModel: RuleProtocol {
    var items: [TempModel] {
        return []
    }
}

可是这样是会有报错的,提示对象PageAViewModel没有遵循RuleProtocol协议,但是我们命名声明了属性items.

经过一番查询和思考,需要在RuleProtocol中关联协议才可正常运行

struct TempModel: Rule {
}

protocol Rule {
}

protocol RuleProtocol {
    associatedtype A: Rule
    var items: [A] {get}
}

struct FreeGiftPage: RuleProtocol {
    var items: [TempModel] {
        return []
    }
}

相关文章

  • Swift泛型-关联类型问题

    今天写代码遇到一个泛型问题。我简单描述下场景:对象A和B公用一种类型的属性(或者方法),这时候根据面向协议的原则,...

  • Swift — 泛型(Generics)

    Swift — 泛型(Generics) [TOC] 本文将介绍泛型的一些用法、关联类型、where语句,以及对泛...

  • Swift Tour Learn (十二) -- Swift 语

    本章将会介绍 泛型所解决的问题泛型函数类型参数命名类型参数泛型类型扩展一个泛型类型类型约束关联类型泛型 Where...

  • 14-泛型

    泛型(Generics) 泛型类型 关联类型(Associated Type) 类型约束 协议类型的注意点 泛型解...

  • Rust学习——关联类型

    所面对的问题:trait泛型 与 所关联的对象的具体类型,解决目标类型涉及泛型类别较多的情况,使代码更具可读性关联...

  • 2021-12-01

    swift5基本语法-泛型函数和泛型类型 Swift中泛型可以将类型参数化,提高代码复用率,减少代码量。 一、泛型...

  • Swift-泛型、关联类型

    一、泛型 我们可以在函数、类、结构体、枚举中使用泛型,在名称后使用来表示,例子如下: Sw...

  • 【Swift】泛型常见使用

    1、Swift泛型4种 泛型函数泛型类型泛型协议泛型约束 2、泛型约束3种 继承约束:泛型类型 必须 是某个类的子...

  • Swift-泛型笔记

    Swift 泛型 Swift 提供了泛型让你写出灵活且可重用的函数和类型。 Swift 标准库是通过泛型代码构建出...

  • Swift 泛型之条件性符合协议

    Swift 泛型条件性符合(Conditional conformances) 表示泛型类型只有在其类型参数满足某...

网友评论

      本文标题:Swift泛型-关联类型问题

      本文链接:https://www.haomeiwen.com/subject/fgrcoctx.html