美文网首页
Swift错误处理和泛型

Swift错误处理和泛型

作者: chrisdev | 来源:发表于2018-11-17 03:12 被阅读0次

1. 错误处理, 可以用任何遵循Error协议的类型来表示错误. 可以用throw来抛出一个错误, 并用throws来标记一个可以抛出错误的函数. 如果在函数里抛出错误, 函数会立即返回并调用函数的代码处理错误.

enum PrinterError: Error {    case outofPaper, noToner, onFire    }

func send(job: Int, toPrinter printerName: String) throws -> String {

        if pringterName = "Never Has Toner" {    throw PrinterError.noToner    }

        return "Job sent"

}

2. 处理错误的方法: do-catch, 在do代码块里, 用try来在能抛出错误的函数前标记, 在catch代码里, 错误会自动赋予名字error, 如果不给其他名字的话. 另一种方式是: 使用try?来转换结果为可选项, 如果返回错误, 错误将会被忽略并且结果为nil, 否则结果是函数返回值的可选项. defer是函数返回后也会被执行的代码块, 

do {

        let printerResponse = try?send(job: 1040, toPrinter: "Bi Sheng")

        print(printerResponse)

} catch {

        print(error)

}

3. 泛型, Swift是一种静态类型化语言, 编译器明确知道代码处理什么类型的信息, 这就意味着不能将字符串传送给打算处理日期的代码. OC是可以的, 但是这种严格性, 意味着失去灵活性, 这个时候泛型就出场了. 事实上数组就是一种泛型. 创建一个泛型类型, 通常像对象一样命名, 然后在尖括号之间指定任意泛型类型. 传统上使用术语T, 但完全可以按照自己的意愿使用任何术语.

class Tree<T> {

        var value: T                                    //T现在可以看做一种类型

        var children: [Tree <T>] = []        //任意数量的子tree对象

        init(value: Int) {    self.value = value    }

        func addChild(value: T) -> Tree <T> {

                let newChild = Tree<T>(value: value)

                children.append(newChild)

                return newChild

        }

}    //一旦定义了一个泛型类型, 就可以创建具体非泛型类型.

//创建Int版本

let IntegerTree = Tree<Int>(value: 5);    IntegerTree.addChild(5)

//Stirng版本

let stringTree = Tree<String>(value: "hello");    stringTree.addChild("world")

相关文章

  • (WWDC) Swift 和 Objective-C 的互操作性

    内容概览 Swift 与 Objective-C 交互 错误处理 为空性标注 轻量级泛型 Kindof 类型 总结...

  • Swift错误处理和泛型

    1. 错误处理, 可以用任何遵循Error协议的类型来表示错误. 可以用throw来抛出一个错误, 并用throw...

  • swift从入门到放弃-初步接触(1)

    初步接触可变参数枚举结构体错误处理泛型 由于项目需要和苹果发展的趋势,swift的学习势在必得,swift以其优秀...

  • Swift-泛型笔记

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

  • 2021-12-01

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

  • swift 泛型

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

  • Swift和OC的区别

    Swift和OC的区别? 1、Swift没有地址和指针的概念 2、Swift对数据类型要求极为严谨 3、泛型,泛型...

  • Swift错误处理和泛型(ErrorHandlingAndGen

    错误处理 泛型 ErrorHandling defer使用关键字defer写一个代码块,它会在这个函数内所有代码执...

  • [ WWDC2018 ] - Swift 泛型 Swift Ge

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

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

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

网友评论

      本文标题:Swift错误处理和泛型

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