Swift 泛型 理解

在swift中,class、struct、enums都可以是用参数化类型来表达泛型的,只有在协议中需要使用associatedtype关键字来表达参数化类型。为什么协议不采用这样的语法形式呢?

采用语法的参数化方式的泛型其实定义了整个类型的家族,在概念上这对于一个可以具体实现的类型(class、struct、enums)是有意义的,比方说Array,Array。但对于协议来说,协议表达的含义是single的。你只会实现一次GeneratorType,而不会实现一个GeneratorType协议,接着又实现另外一个GeneratorType协议。

协议在swift中有两个目的,第一个目的是用来实现多继承(swift语言被设计为单继承的),第二个目的是强制实现者必须准守自己所指定的泛型约束。关键字associatedtype是用来实现第二个目的的。在GeneratorType中由associatedtype指定的Element,是用来控制next()方法的返回类型的。而不是用来指定GeneratorType的类型的。

1.函数泛型

`func SwapTwoValues (inouta: T,inoutb :T)    { let tempValue = a      a = b      b = tempValue}`

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原文:Generics Manifesto -- Douglas Gregor 译者注 在我慢慢地深入使用 Swi...
    kemchenj阅读 6,809评论 0 6
  • 泛型代码可以确保你写出灵活的,可重用的函数和定义出任何你所确定好的需求的类型。你的可以写出避免重复的代码,并且用一...
    iOS_Developer阅读 4,229评论 0 0
  • 参考资源《swifter》https://github.com/iOS-Swift-Developers/Swif...
    柯浩然阅读 5,326评论 0 6
  • 本章将会介绍 泛型所解决的问题泛型函数类型参数命名类型参数泛型类型扩展一个泛型类型类型约束关联类型泛型 Where...
    寒桥阅读 3,868评论 0 2
  • 参加了今天的晨会我的收获是: ①一个人能到达的高度是有限的。 ②一个人到不了的高度,一个团队合作齐心合力就能到达。...
    爱你的Lisa阅读 1,720评论 0 0

友情链接更多精彩内容