文档章节

swift初学之泛型体验

代码诱惑
 代码诱惑
发布于 2014/08/17 11:52
字数 511
阅读 5
收藏 0

泛型对于强类型语言来说是一种便捷开发的方式,只要遵循我的规范,你就可以调用我的方法,科技又一次遵循了工业时代的理念,类似于接口,又高于接口的一种编程方式

在java中泛型已经应用很广泛了,那么在swift中泛型也是那么的给力

//交换两个int数值
var first = 55
var second = 100
func swapIntValues(a: Int, b: Int){
    let temp = a
    a = b
    b = a
} 
//调用函数
swapIntValues(&first, &second) 
//因为在swift基本类型传递时是按照值传递的,就是赋值一个变量副本传递给函数,函数结束时,并不会影响原先的值,所//以这里利用&来去它的引用,这样first= 100  second = 55
//当需要交换两个字符串时,又要写一个交换字符串的方法,这么不环保的做法,谁能容忍,看泛型走起
func swapValues<T>(a: T, b: T){
    let temp = a
    a = b
    b = temp
}
//这里已经很明确了
//泛型约束,只有泛型可能还不能满足一定的功能,假如在数组中查找是否包含一个,返回这个对象的索引
var data = ["小强","小强250","小强二"]

func findIndex<T>(array: [T], b: T) -> Int?{ //返回类型是一个可选值
    for (index,value) in enumerate(array) {
        if b == value {
            return index
        }
    }
    return nil
}

if let index = findIndex(array: data,b: "小强"){ //可选值可以用作boolean判断

    println("\(index)") //输出 0

}

//这是对String的判断用==,然而有时可能要比较两个自定义对象,那么在swift中可以通过一个泛型约束来约束这个类
//实现Equatable ,实现这个协议,可以进行 == 和!=的比较,所有的swift标准类型自动支持Equatable协议

//上面的方法可以变成
func findIndex<T: Equatable>(array: T[],b: T) -> Int?{
     for (index,value) in enumerate(array) {
        if b == value {
            return index
        }
    }
    return nil
}
//类型约束还可以加where条件语句,进一步约束,待续。。。。


© 著作权归作者所有

上一篇: swift闭包初见
下一篇: swift初学总结
代码诱惑
粉丝 1
博文 5
码字总数 3223
作品 0
济南
程序员
私信 提问
AppCode 3.3 发布,Xcode 7.1 支持

AppCode 3.3 发布下载,此版本主要改进包括 Xcode 7 支持和 Swift 2 调试器改进。 从 AppCode 3.3. 版本开始官方支持 Xcode 7 和 Xcode 7.1;改进对泛型的支持;支持 _Nonnull 和 _Nullable ...

oschina
2015/11/03
2.5K
4
Swift 3.0 将会带来什么

Swift 近两年的发展势头非常的迅猛,而在它开源后,更是如井喷一样的势头,除了 iOS 平台,还支持了 Linux。 而今年下半年, Swift 3.0 也会随之发布。这次我就和大家聊一下 Swift 3.0 会有什...

oschina
2016/05/01
10.9K
23
我们期待的 Swift 3.0 将会是什么样?

我们期待的 Swift 3.0 将会是什么样? —— 此调查来自官方的 Swift 社区 随着诸如协议扩展、错误处理等 Swift 2.0 新引入的强大特性发布,这都意味着苹果已经明确表示,它们非常积极地听取来...

oschina
2015/11/09
7.4K
19
Swift 4.2 正式发布:泛型改进,更快更兼容!

Swift 4.2 现已正式发布!Swift 4.2 基于 Swift 4 的优势,提供更快的编译时间,改进调试体验,更新标准库以及融合二进制兼容性。 泛型改进 随着对 conditional conformance 的支持,Swift 4...

王练
2018/09/18
3.6K
14
【译】Swift 泛型宣言

原文:Generics Manifesto -- Douglas Gregor 译者注 在我慢慢地深入使用 Swift 之后,碰壁了很多次,很大一部分都是因为 Swift 的泛型系统导致的,很多抽象都没办法很好地表达出来,所以就翻...

四娘
2017/11/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
昨天
64
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
昨天
26
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
昨天
43
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
昨天
27
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
昨天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部