博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift泛型
阅读量:6502 次
发布时间:2019-06-24

本文共 1066 字,大约阅读时间需要 3 分钟。

泛型是为Swift编程灵活性的一种语法,在函数、枚举、结构体、类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型。

泛型函数

定义

fun 函数名
(形参列表)->返回值类型{ //函数体...}

例子:

func copyArray
(src:[T],inout dest:[T]) { for element in src { dest.append(element) } var arr=[1,2] copyArray([3,4], dest: &arr) print(arr)

在这里我们运用泛型为函数提供了一个T类型的占位符,这个占位符就可以在函数的实际调用中被替换成真是类型。

结构体泛型

struct WXRect
{ var x:T var y:T var Add:(T,T) { return (self.x,self.y) } } let rect=WXRect
(x: 20.0, y: 20.0) let (30.0,20.0)=rect.Add print("(\(x),\(y))")

类中泛型

class Swift
{ var info:T init(info:T) { self.info=info }} var swift=Swift
(info:"Swift泛型") print("\(swift.info)真强大")

类型约束

上面的例子中,泛型形参没有什么约束,我们可以对泛型传入任何值,但在实际中,或许有时候我们需要为泛型增加某些特定的约束。

定义类型参数时增加一个限制,约束这个类型参数必须继承自特定的类,或遵守一个特定的协议或合成协议,这就叫做类型约束。

语法格式:

<类型形参1:父类,类型形参2:协议,类型形参3:protocol<协议1,协议2>,..>

Where语句

where语句要求一个关联类型遵循一个特定的协议,或那个特定的类型参数和关联类型可以是相同的

<类型形参:父类型,类型形参2:协议,…where 条件>

转载地址:http://hhtyo.baihongyu.com/

你可能感兴趣的文章
重温JSP学习笔记--JSTL标签库
查看>>
搭建云平台和DevOps实践环境
查看>>
SpringBoot中关于Mybatis使用的三个问题
查看>>
高手如何实践HBase?不容错过的滴滴内部技巧
查看>>
公钥证书编码解读
查看>>
Docker Swarm的前世今生
查看>>
Golang反射机制的应用
查看>>
TMS云医药行业解决方案亮相“第六届中国药品冷链物流峰会”
查看>>
她用短视频收获百万粉丝,常常卖断货,背后的真相是…
查看>>
EL1057E: No bean resolver registered in the context to resolve access to bean 'permissionService'
查看>>
勒索病毒来势汹汹,国内近3万机构中招!
查看>>
2017“南京周·纽约站”盛大开幕,火柴全景VR骑行游南京大获好评
查看>>
php核心知识要点
查看>>
Guava 27.1 正式发布,Google 的 Java 核心工具库
查看>>
数据结构思维 第一章 接口
查看>>
硅谷顶级投资人看2017趋势,AI将成为5年前的“大数据”
查看>>
FPGA按一下按键,对应端口输出单个脉冲
查看>>
我为什么要写博客
查看>>
深度学习如何应用在广告、推荐及搜索业务?阿里妈妈实践案例解读
查看>>
科学家叫停机器人革命,请先思考背后的伦理问题
查看>>