Swift泛型

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

泛型函数

定义

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

例子:

 func copyArray<T>(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<T>
{
    var x:T
    var y:T
    var Add:(T,T)
        {
        return (self.x,self.y)
        }
 }
     let rect=WXRect<Double>(x: 20.0, y: 20.0)
    let (30.0,20.0)=rect.Add
    print("(\(x),\(y))")

类中泛型

    class Swift<T> {
    var info:T
    init(info:T)
   {
    self.info=info
    }
}

    var swift=Swift<String>(info:"Swift泛型")
    print("\(swift.info)真强大")

类型约束

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

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

语法格式:

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

Where语句

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

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

时间: 2024-12-20 21:53:40

Swift泛型的相关文章

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

系统整理 精讲 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

Swift 泛型參数

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

swift 泛型

泛型 在尖括号里写一个名字来创建一个泛型函数或者类型. func repeat<ItemType>(item: ItemType, times: Int) -> [ItemType] { var result = [ItemType]() for i in 0..<times { result.append(item) } return result } repeat("knock", 4) 你也可以创建泛型类.枚举和结构体. enum OptionalValu

Swift学习笔记(二十三)——Swift泛型初识

泛型的概念在Java中也是存在的,泛型可以使代码更为精炼,是对数据类型使用的一种优化.现在有一样的一个需求:写一个结构体,然后判断整型的是否相等.好,实现代码以及输出如下: . 如果此时又多了一个需求,需要判断两个浮点型的是否相等.那怎么办,代码实现基本和上面一样,不过我们又得重新写一遍浮点型的代码: . 以上两个代码将会导致代码可重用性变差且变得冗余,如果使用泛型来实现,将会变得很简单: . 泛型的实现是不是很高大上呢.让我们的代码也提升B格吧. 版权声明:本文为博主原创文章,未经博主允许不得

Swift泛型协议的N种用法

1.https://www.cnblogs.com/manupstairs/p/5960992.html 2.https://www.jianshu.com/p/a6bcdebd83f5 原文地址:https://www.cnblogs.com/sundaysme/p/11477456.html

Swift语言里的泛型与异常处理

我感觉泛型挺难,希望对你们有帮助 //一个泛型a,b值交换的列子,可以传入什么类型 func mySwap<T>(inout a: T,inout b: T) { let temp = a a = b b = temp } var a = 111 var b = 222 mySwap(&a, b: &b) //普通整形a,b值交换列子,只能传入整形 func mySwap2(inout a: Int,inout b: Int) { let temp = a a = b b =

iOS9新特性之泛型

泛型:限制类型 为什么退出泛型:迎合swift 泛型的作用:1.限制类型:2.提高代码规范,减少沟通成本,一看就知道集合中是什么东西 泛型定义 用法:类型<限制类型> 泛型声明:在声明类的时候,在类的后面<泛型名称> 泛型使用错误在 OC中仅仅是报警告 泛型的好处:1.从数组中取出来,可以使用点语法 2.给数组添加元素,有提示 泛型在开发中的使用场景:1.用于限制集合类型 id是不能使用点语法的 为什么集合可以使用泛型?使用泛型,必须先声明泛型?=>如何声明泛型 自定义泛型?