Swift 泛型(generics)

Swift
使用<>来声明泛型函数或泛型类型:


1 func repeat<ItemType>(item: ItemType, times: Int) -> ItemType[] {
2 var result = ItemType[]()
3 for i in 0..times {
4 result += item
5 }
6 return result
7 }
8 repeat ("knock", 4)

Swift
也支持在类、枚举和结构中使用泛型:


1 // Reimplement the Swift standard library‘s optional type enum OptionalValue<T> {
2 case None
3 case Some (T)
4 }
5 var possibleInteger: OptionalValue<Int> = .None
6 possibleInteger = .Some (100)

有时需要对泛型做一些需求(requirements),比如需求某个泛型类型实现某个接口或继承自某个特定类型、两个泛型类型属于同一个类型等等,Swift
通过where描述这些需求:


 1 func anyCommonElements <T, U where T: Sequence, U: Sequence, T.GeneratorType.Element: Equatable, T.GeneratorType.Element == U.GeneratorType.Element> (lhs: T, rhs: U) -> Bool {
2 for lhsItem in lhs {
3 for rhsItem in rhs {
4 if lhsItem == rhsItem {
5 return true
6 }
7 }
8 }
9 return false
10 }
11 anyCommonElements ([1, 2, 3], [3])

Swift 泛型(generics),布布扣,bubuko.com

时间: 2024-10-13 12:17:48

Swift 泛型(generics)的相关文章

Swift泛型

泛型是为Swift编程灵活性的一种语法,在函数.枚举.结构体.类中都得到充分的应用,它的引入可以起到占位符的作用,当类型暂时不确定的,只有等到调用函数时才能确定具体类型的时候可以引入泛型. 泛型函数 定义 fun 函数名<T,S>(形参列表)->返回值类型 { //函数体... } 例子: func copyArray<T>(src:[T],inout dest:[T]) { for element in src { dest.append(element) } var ar

Java 语法 索引 ----- 泛型(Generics)

class B<T extends A> {} class A {} -------------------------- class C<T extends I> {} interface I {} ----------------------- class D<T extends A & I> {} class E<T extends A & I, U extends A & I> {} 参考文献: Java Quick Synt

二十一、泛型 Generics

1.概述 泛型是Swift中最强大的特性之一,使用泛型可以写出灵活.可重用.干净.抽象的代码,并且避免代码重复.实际上在第一章中我们就接触到了泛型,Array 和 Dictionary 是泛型容器,可以存入任何类型. 2. 泛型所要解决的问题 The Problem That Generics Solve 下面定义了一个交换两个值的函数,它没有使用泛型特性: func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a =

系统整理 精讲 swift 泛型

泛型是一种非常领会的语法,让我很是膜拜! 真是让人又爱又恨,学不懂的时候很抓狂 允许程序在函数,枚举,结构体,类中定义类型形参(类型可以动态改变) 每次使用可以传入不同类型的形参! Array<T>   T就是泛型,代表数组元素的类型 struct Dictionary<Key:Hashable,Value> key value是泛型语法 Array<String>限定了元素类型 位String的数组 为什么要用?会带来哪些方便?请看下面例子 要求:前一个数组追加到后一

Swift泛型和泛型函数

泛型(generic)可以使我们在程序代码中定义一些可变的部分,在运行的时候指定.使用泛型可以最大限度地重用代码.保护类型的安全以及提高性能.在Swift集合类中,已经采用了泛型.一.一个问题的思考怎样定义一个函数来判断两个参数是否相等呢?如果参数是Int类型,则函数定义如下:func isEqualsInt(a:Int, b:Int) -> Bool {    return (a == b)}这个函数参数列表是两个Int类型,它只能比较两个Int类型参数是否相等.如果我们想比较两个Double

泛型 Generics

2.0 版 C# 语言和公共语言运行时 (CLR) 中增加了泛型.泛型将类型参数的概念引入 .NET Framework,类型参数使得设计如下类和方法成为可能:这些类和方法将一个或多个类型的指定推迟到客户端代码声明并实例化该类或方法的时候.例如,通过使用泛型类型参数 T,您可以编写其他客户端代码能够使用的单个类,而不致引入运行时强制转换或装箱操作的成本或风险,如下所示: 1 namespace Generics 2 { 3 public class GenericList<T> 4 { 5 v

Swift 泛型參数

原文:http://www.cocoachina.com/newbie/basic/2014/0612/8802.html 本页内容包含:泛型形參语句和泛型实參语句 本节涉及泛型类型.泛型函数以及泛型构造器的參数,包含形參和实參.声明泛型类型.函数或构造器时,须指定对应的类型參数.类型參数相当于一个占位符,当实例化泛型类型.调用泛型函数或泛型构造器时,就用详细的类型实參替代之. 关于 Swift 语言的泛型概述,见泛型(第二部分第22章). 泛型形參语句 泛型形參语句指定泛型类型或函数的类型形參

java泛型 generics --- 第三部分 泛型、继承、和子类型

Generics, Inheritance, and Subtypes 正如你所知,可以把一种对象类型赋值给另一种类型,只要他们是兼容的.例如,你可以把Integer对象赋值给Object. Object someObject = new Object(); Integer someInteger = new Integer(10); someObject = someInteger; // OK 在面向对象技术中,这被称作"is a"关系.即一个Integer是一中Object,该赋

Java泛型Generics

转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/51493181 泛型 泛型是JDK 5中引入的一个新特性 在尖括号中包含的是形式类型参数,可以在整个类的声明中被使用,当类被使用时,会使用具体的实际类型参数来代替 形式类型参数的命名:尽量使用单个大写字母 普通泛型 一个泛型类型 package cn.wuxiaocheng; class Person<T> { // 标识符可以随便写,T是type的简称 private T name;