美文网首页
Swift学习:泛型

Swift学习:泛型

作者: 逸飞u | 来源:发表于2016-04-13 19:24 被阅读64次

使用泛型的原因:

例如:

class Object {   }

class Stack1 {
    
    var items = [Object]()
    
    func push(item: Object) {
        items.append(item)
    }
    
    func pop() -> Object {
        return items.removeLast()
    }
}

但是,如果传值的时候需要考虑的问题很多,也影响性能(例子存在问题)

var s = Stack1()
s.push("abc")
s.push(182)
s.push(MyClass())

因此需要这样设置泛型

//泛型类型
class Stack<T> {
    
    var items = [T]()
    
    func push(item: T) {
        items.append(item)
    }
    
    func pop() -> T {
        return items.removeLast()
    }
}

//泛型函数
func swap<T>(inout first:T, inout second:T){
    let temp=first
    first=second
    second=temp
}

var data1=100.87
var data2=200.22
swap(&data1, &data2)

关联类型

swift 不支持泛型的协议,但可以这样实现
1.通过 associatedtype 在 protocol 里定义关联类型
2.实现协议时,可以将关联类型设置为泛型类型参数


protocol Container {
    associatedtype ItemType //关联类型
    
    func append(item: ItemType)
    var count: Int { get }
    subscript(i: Int) -> ItemType { get }
}

class Stack<T>: Container {
    
    typealias ItemType=T    
    var items = [T]()
    ...
    
    }
}

泛型约束

没有约束,泛型类型的功能就会很少

//泛型约束
func max<T:Comparable>(array: [T]) -> T {//Comparable是一个协议
    var value=array[0]
    
    for index in 1..<array.count
    {
        if array[index]>value {
            value=array[index]
        }
    }
    
    
    
    return value
}

多个约束

func max <T where T:Equatable ,T:Comparable>(array: [T]) -> T {}

相关文章

  • swift 泛型

    Swift-泛型学习和实例总结 - Mazy's Blog - CSDN博客 Swift中的泛型 - 简书

  • Swift-泛型笔记

    Swift 泛型 Swift 提供了泛型让你写出灵活且可重用的函数和类型。 Swift 标准库是通过泛型代码构建出...

  • [ WWDC2018 ] - Swift 泛型 Swift Ge

    Swift 泛型历史 我们首先来回顾一下 Swift 中对于泛型支持的历史变更,看看现在在 Swift 中,泛型都...

  • Swift 运用协议泛型封装网络层

    Swift 运用协议泛型封装网络层 Swift 运用协议泛型封装网络层

  • 2021-12-01

    swift5基本语法-泛型函数和泛型类型 Swift中泛型可以将类型参数化,提高代码复用率,减少代码量。 一、泛型...

  • Swift学习:泛型

    本篇将详细总结介绍Swift泛型的用法;Swift泛型代码让你能够根据自定义的需求,编写出适用于任意类型、灵活可重...

  • Swift学习_泛型

    泛型泛型的本质是参数化类型,也就是说所有操作的数据类型被制定为一个参数,这种参数类型可以用在类型、函数和方法中。 ...

  • Swift学习:泛型

    使用泛型的原因: 例如: 但是,如果传值的时候需要考虑的问题很多,也影响性能(例子存在问题) 因此需要这样设置泛型...

  • Swift学习泛型

    swapTwoInts(::) 函数很实用,但是它只能用于 Int 值。如果你想交换两个 String 值,或者两...

  • Swift泛型

    泛型是 Swift 最强大的特性之一,oc转Swift的需要重点学习一下。① 泛型代码能根据所定义的要求写出可以用...

网友评论

      本文标题: Swift学习:泛型

      本文链接:https://www.haomeiwen.com/subject/twfglttx.html