iOS开发--泛型
一. 泛型函数
1.单一占位符泛型函数
下面就使用一个经典案例:两个数值进行交换。来使用泛型,写一个通用的函数,这个函数的功能就是交换两个变量的值。在Swift中不允许类型隐式转换,也就是说,如果你定义的该函数是交换两个整数的,那么如果你想使用他来交换浮点类型的数据,那么对不起,是不允许这样做的。为了写个通用的函数,那接下来就是泛型出场的时候了。
下面就是使用泛型来定义一个交换两个变量的值的函数,该函数如下图所示。其中MyCustomeType就是在函数中定义的泛型占位符,改占位符表示传入的参数是什么类型,那么MyCustomeType就是什么类型。这样一来,使用泛型定义的该函数就是通用的了。在该函数中只用到了一个MyCustomeType,也就是下方的函数还是有一定约束性,就是number1和number2的类型都是相同数据类型的,这种情况也是单一占位符泛型函数。

调用上述函数来交换两个字符串类型的值:

同样的函数,你还可以使用它来交换两个整数,浮点数等等其他数据类型,下方就是交换的两个整型的数据,也是没有问题的。

2.多个占位符的泛型函数
这个是在上述函数中进行的扩充,泛型占位符允许是一个列表的形式出现的,也就是允许有多个不同的泛型占位符来代表不同的数据类型。也许说起来有些拗口,接下来就来个实例在函数中使用多个泛型占位符。具体实例如下所示。本质上允许在泛型占位符中添加多个泛型类型变量。下方的函数两个参数的数据类型允许不同,因为其参数使用的是不同的泛型占位符,所以其类型允许是不同的。具体使用方式如下所示。

二.泛型类
泛型类,顾名思义,就是在类中使用泛型。在类中使用泛型,其实和函数中使用泛型是一样的。就是在声明类的时候,使用泛型占位符表示一个要处理的泛型即可。下方就是一个泛型类,其中有个泛型类型数组,还有一个打印该数组的方法,如下所示:

上面是泛型类的定义,紧接着就是泛型类的使用了,下方是创建一个泛型类的实例,然后调用相应的方法,具体如下所示。

上面是泛型类的定义与使用,泛型还可以应用于结构体,协议,延展等,其使用方法和泛型类是差不多的,要学会举一反三。在本篇博客中就不对泛型结构体,泛型协议,泛型延展,以及泛型的约束做过多的赘述了。
iOS开发--泛型的更多相关文章
- iOS开发系列--Swift语言
概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...
- iOS开发系列--Swift进阶
概述 上一篇文章<iOS开发系列--Swift语言>中对Swift的语法特点以及它和C.ObjC等其他语言的用法区别进行了介绍.当然,这只是Swift的入门基础,但是仅仅了解这些对于使用S ...
- iOS 开发总结(上)
来源:蝴蝶之梦天使 链接:http://www.jianshu.com/p/d333cf6ae4b0 在iOS开发中经常需要使用的或不常用的知识点的总结,几年的收藏和积累(踩过的坑). 一. iPho ...
- IOS 开发中要注意的事项
1.关于拍摄 TGCameraViewController – 基于 AVFoundation 的自定义相机.样式漂亮,轻量并且可以很容易地集成到 iOS 项目中.不会内存吃紧 2.block 中对控 ...
- Objective C (iOS) for Qt C++ Developers(iOS开发,Qt开发人员需要了解什么?)
Qt/C++开发人员眼中的Obj-C 对于我们第一次自己定义iOS应用来说,对于来自Qt/C++开发人员来说,我不得不学习Objective-C相关语法与知识 为了让读者可以更easy理解这 ...
- iOS开发系列课程预告
近期在Mac和iOS上做开发,认为应该写一点东西分享给感兴趣的童鞋们.在此之前.以前有非常多同行们都在埋怨苹果Objective-C的复杂和难以上手,为此也有非常多人对今年(2014年)刚推出的Swi ...
- iOS开发中的单元测试(三)——URLManager中的测试用例解析
本文转载至 http://www.cocoachina.com/cms/plus/view.php?aid=8088 此前,我们在<iOS开发中的单元测试(一)&(二)>中介绍 ...
- iOS开发系列--打造自己的“美图秀秀”
--绘图与滤镜全面解析 概述 在iOS中可以很容易的开发出绚丽的界面效果,一方面得益于成功系统的设计,另一方面得益于它强大的开发框架.今天我们将围绕iOS中两大图形.图像绘图框架进行介绍:Quartz ...
- iOS开发之再探多线程编程:Grand Central Dispatch详解
Swift3.0相关代码已在github上更新.之前关于iOS开发多线程的内容发布过一篇博客,其中介绍了NSThread.操作队列以及GCD,介绍的不够深入.今天就以GCD为主题来全面的总结一下GCD ...
随机推荐
- POC - ASP.NET & IIS 部分
终于得到了我VM的管理员权限啦啦.接下来不需要把IIS架在我自己的电脑上了,将架在我的VM上. 1. 先添加ISAP和CGI的组件. 2. 将defaultAppPool的MODE设为CLASSIC, ...
- 认识Linux
Linux的内核版本 1.如何查看Linux的内核版本 # uname -r -.el6.i686 2. 2.6.32-358的含义 主版本.次版本.释出版本-修改版本 3.主次版本编号规则 ...
- SPA examples
http://webdesignledger.com/inspiration/40-excellent-examples-of-single-page-websites https://onepage ...
- DataGridView控件
DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它可以取代先前版本中DataGrid控件,它易于使用并高度可定制,支持很多我们的用户需要的特 ...
- 受限玻尔兹曼机RBM—简易详解
- Bootstrap入门二:响应式页面布局
Bootstrap 提供了一套响应式.移动设备优先的流式栅格系统,随着屏幕或视口(viewport)尺寸的增加,系统会自动分为最多12列.它包含了易于使用的预定义类,还有强大的mixin 用于生成更具 ...
- Netsharp快速入门(之16) Netsharp基础功能(权限管理)
第5章 Netsharp基础功能 5.1 权限配置 5.1.1 功能权限 1.配置权限功能点,打开平台工具-基础业务-操作管理 2.选择资源节点为销售订单,点添加常用操作,添加完成后 ...
- mysql的简单主从复制(ubuntu)
环境:两台ubuntu 12.04.5 虚拟机 mysql-server-5.5 master (192.168.240.130) slave (192.168.240.129) (1)查看二进 ...
- 在mac下使用brew和brew cask轻松实现软件安装
Brew(homebrew) 1.简介 Brew 是 Mac 下面的包管理工具,通过 Github 托管适合 Mac 的编译配置以及 Patch,可以方便的安装开发工具. Mac 自带ruby 所以安 ...
- C# 天气预报
问题描述: 使用C#做一个简易的天气预报系统 问题解决: 主要使用类如下: WeatherLoc:包含常用的调用中国气象局天气情况接口 using System; using System.Colle ...