swift 关联类型

本文介绍了Swift协议中关联类型的概念,它作为一个占位符,允许在协议被遵循时指定实际类型。关联类型使得遵守协议的类型能用泛型实现方法,提高了代码复用性。

定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位符名称,其代表的实际类型在协议被遵循时才会被指定。关联类型通过 associatedtype 关键字来指定。

关联类型的目的是让遵守这个协议的类、结构体或枚举可以用泛型去实现其方法。如果有多个类型的数据实现都能用到这个方法就会方便很多。

// 定义协议 Container
protocol Container {
    // 关联类型Item代表的实际类型在协议被遵循时才会被指定
    associatedtype Item 
    mutating func append(_ item: Item)
    var count: Int { get }
    subscript(i: Int) -> Item { get }
}


// 遵守协议 Container,指定关联类型为Int
struct IntStack: Container {
    var items: [Int] = []
    mutating func push(_ item: Item) {
        items.append(item)
    }
    mutating func pop() -> Int {
        return items.removeLast()
    }
    
    // Container 协议的实现部分
//    typealias Item = Int    // 可不写,swift会自己推断出来
    mutating func append(_ item: Int) {
        self.push(item)
    }
    var count: Int {
        return items.count
    }
    
    subscript(i: Int) -> Int {
        return items[i]
    }
}

// 遵守协议 Container,指定关联类型为泛型Element
struct MyStack<Element>: Container {
    var items: [Element] = []
    mutating func push(_ item: Element) {
        items.append(item)
    }
    mutating func pop() -> Element {
        return items.removeLast()
    }
    // Container 协议的实现部分,这时关联类型Item就变成了泛型Element
    mutating func append(_ item: Element) {
        self.push(item)
    }
    var count: Int {
        return items.count
    }
    subscript(i: Int) -> Element {
        return items[i]
    }
}

完全破解狗限制 网络上的都不能去掉的 因为用上一段时间就会弹出的哦 而这个已完美去除 软件简介《珂琳娜洗衣信息管理系统》在国内的洗衣软件中处于领先地位 它分为标准版 远程版和工厂版 本店销售的是单机标准版 整体采用C S架构 后台数据库采用SSQL 支持远程数据上报下载 具有功能强大 操作简单 界面清新等特点 是大中型洗衣连锁店的完美解决方案 我们在洗衣行业已有四年的接触和认知 在洗衣流程和功能要求方面积累了丰富的经验 开发出的洗衣系统囊括了整个洗衣流程 环节和细节 整个洗衣业务流程都体现在软件中 充份为店内的各项要求进行周密的考虑与设计 人性化强 软件支持磁卡 IC卡 四种型号的POS打印机 满足各种不同用户的要求 洗衣行业最近几年在我国普及开来 随着网络技术在内的信息技术在我国各行各业的应用和发展已非常普遍 市场迫切需要在开店伊始就要采用相应的软件管理店面 提升管理档次 另一方面 洗衣行业暴露出了诸多弊病 加盟店管理混乱 账目不清 衣物丢失等 随着规模的扩大 多家连锁洗衣使得经营者比较头疼 传统的单机版洗衣管理软件已满足不了现代洗衣行业的管理模式 市场非常需要高效率的应用解决方案 四年前 我们开发的一些单机版的洗衣软件产品 普及了一些洗衣店 但都针对的是一些小型洗衣店 甚至作坊式洗衣店 限于当时的计算机技术发展水平 产品的技术含量低 已不能适应洗衣行业的发展水平 现在 快速发展的计算机技术及相关的硬件已为洗衣行业的管理提供了便利的手段 为一个行业提供服务和开发产品 首先要了解这个行业的运作模式 错误的或肤浅的认知都会影响到产品的先进性 适应性和前瞻性 我们在洗衣行业已有四年的接触和认知 在洗衣流程等方面积累了丰富的经验 开发出了《珂琳娜洗衣信息管理系统》 这是一套囊括整个洗衣流程 环节和细节的管理软件 整个洗衣业务流程都体现在软件中 非常适用于现在的洗衣公司(店) 洗衣信息管理系统应尽可能将成熟的计算机技术应用于洗衣服务的各个环节 来提高工作效率 减少各环节的差错 杜绝管理漏洞 实施一套符合自己店面的管理软件 用户的需求是多种多样的 洗衣行业也不例外 不同经营规模以及管理模式等特点都会带来不同需求 作为应用解决方案 应该是体系化 网络化并且易于扩展的 对洗衣管理软件的开发进行了系统地规划:1 原则:满足当今洗衣业行需求的管理系统规划 应遵循以下原则:⑴ 洗衣行业已经发展到规模经营 连锁经营 跨地区经营 适应这种趋势;⑵ 硬件方面易采购 产品质量稳定耐用 操作傻瓜型;⑶ 软件的规划上 操作简单明了 满足日常管理的各项需求 2 规划:一个完整的系统规划 由硬件设备和软件模块组成 硬件设备又分输入设备和输出终端 输入设备可选配条码扫描枪 输出终端为热敏或针式高速POS打印机 ⑴ 硬件方面标配为磁卡阅读器(IC卡读写器) POS打印机 电控钱箱 可选配件为条码扫描枪 客户显示屏等 ⑵ 软件方面采用C S架构 局域网内实时操作 远程分店每日可上报数据进行汇总 ⑶ 灵活的会员卡管理模式 用户可持卡异店消费 ">完全破解狗限制 网络上的都不能去掉的 因为用上一段时间就会弹出的哦 而这个已完美去除 软件简介《珂琳娜洗衣信息管理系统》在国内的洗衣软件中处于领先地位 它分为标准版 远程版和工厂版 本店销售的是单机标 [更多]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值