美文网首页
Swift-泛型

Swift-泛型

作者: lieon | 来源:发表于2020-12-15 10:27 被阅读0次

泛型

  • 将类型参数化,类似于C++中的模板
class Stack<E> {
    var elements = [E]()
    
    func push(_ element: E) {
        elements.append(element)
    }
    
    func pop() -> E {
        return elements.removeLast()
    }
    
    func top() -> E {
        return elements.last!
    }
    
    func size() -> Int {
        return elements.count
    }
}
  • 可以在协议中定一个泛型(关联类型)
protocol Stackable {
    associatedtype Element
    mutating func push(_ element: Element)
    mutating func pop() -> Element
    func top() -> Element
    func size() -> Int
}

class Stack<E>: Stackable {
    var elements = [E]()
    func push(_ element: E) {
        
    }
    mutating func pop() -> E {
        return elements.removeLast()
    }
    func top() -> E {
        return elements.last!
    }
    func size() -> Int {
        return elements.count
    }
}

  • 用于类型约束
protocol Runable { }
class Person { }

func swapValue<T: Person & Runable>(_ a: inout T, _ b: inout T) {
    (a, b) = (b, a)
}

func get<T: Runable>(_ type: Int) -> T {
    if type == 0 {
        return Person() as! T
    }
    return Car() as? T
}
}

不透明类型(Opaque Type)

  • 使用some关键字声明一个不透明类型
  • some限制只能返回一种类型
func get(_ type: Int) -> some Runable {
    return Car()
}

// ❌
func get(_ type: Int) -> some Runable {
    if type == 0 {
        return Person()
    }
    return Car()
}

相关文章

  • swift 泛型

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

  • Swift-泛型

    前言:Swift大多数概念和OC一样,也有些概念在OC中找不到对应的,比如说泛型。Swift中将那种操作写一次就可...

  • Swift- 泛型

    系统泛型 例如:NSDictionary,NSArray 泛型函数 类型参数 始终使用大写字母开头的驼峰命名法(例...

  • Swift-泛型

    泛型代码让你能根据你所定义的要求写出可以用于任何类型的灵活的、可复用的函数。你可以编写出可复用、意图表达清晰、抽象...

  • Swift-泛型

    泛型 将类型参数化,类似于C++中的模板 可以在协议中定一个泛型(关联类型) 用于类型约束 不透明类型(Opaqu...

  • Swift-泛型笔记

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

  • Swift-进阶:泛型

    本文主要介绍泛型及其底层原理 泛型 泛型主要用于解决代码的抽象能力 + 代码的复用性 例如下面的例子,其中的T就是...

  • Swift-进阶 14:泛型

    Swift 进阶之路 文章汇总[https://www.jianshu.com/p/5fbedf309237] 本...

  • Swift-泛型、关联类型

    一、泛型 我们可以在函数、类、结构体、枚举中使用泛型,在名称后使用来表示,例子如下: Sw...

  • 泛型 & 注解 & Log4J日志组件

    掌握的知识 : 基本用法、泛型擦除、泛型类/泛型方法/泛型接口、泛型关键字、反射泛型(案例) 泛型 概述 : 泛型...

网友评论

      本文标题:Swift-泛型

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