浅谈 Swift 中的泛型
Objective-C 缺乏一个重要特性:不支持 泛型 。幸运地是, Swift 拥有这一特性。 泛型 允许你声明的函数、类以及结构体支持不同的数据类型。 提出问题 优秀的泛型使用案例中,最常见的例子当属对 栈(Stack) 的操作。栈作为容器有两种操作:一. 压入(Push) 操作添加项到容器中;二. 弹出(Pop) 操作将最近添加项从容器移除。首先我们用非泛型方式设计 栈 。最后代码如下所示: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class IntStack { // 采用数组作为容器保存数据 类型为Int private var stackItems:[ Int ] = [] // 入栈操作 即Push 添加最新数据到容器最顶部 func pushItem (item:Int) { stackItems.append(item) } // 出栈操作 即Pop 将容器最顶部数据移除 func popItem () -> Int ?{ let lastItem = stackItems.last stackItems.removeLast() return lastItem } } 该栈能够处理 Int 类型数据。这看起来不错,但是倘若要建立一个能够处理 String 类型的 栈 ,我们又该如何实现呢?我们需要替换所有 Int 为 String