Swift4 学习笔记(四)

Protocol协议

下面代码是一个协议的例子

protocol ExampleProtocol {
    var simpleDescription:String { get }
    mutating func adjust()
}

类,枚举和结构体都可以采用协议。

class SimpleClass : ExampleProtocol {
    var simpleDescription: String = "a simple class"
    var anotherProperty : Int = 666
    func adjust() {
        simpleDescription += "is very simple"
    }
}

var aClass = SimpleClass()
aClass.simpleDescription
aClass.adjust()
print(aClass.simpleDescription)
扩展Extension

可以使用扩展来给类等添加新的方法等
我们给上面的协议进行扩展

extension Int : ExampleProtocol {
    var simpleDescription: String {
        return "the number is \(self)"
    }
    
    mutating func adjust() {
        self += 66
    }
}

print(7.simpleDescription)

可以看到控制台输出了

在平时开发中可以对常用的类,进行扩展,使得编码效率大大提高。

错误处理

我们可以采用error protocol 来表示任何错误。

enum PrinterError : Error {
    case outOfPaper
    case noToner
    case onFire
}

使用throw来抛出错误和表示这个函数具备抛出错误的能力。
如果一个函数抛出错误,那么函数回马上return,代码回告诉函数来处理这个错误。

func send(job:Int , toPrinter printName:String)
    throws -> String  {
        if printName == "Never has Paper" {
            throw PrinterError.outOfPaper
        }
        return "success print"
}

有许多中方法来处理错误,可以使用do-catch来处理。
在block中我们标记这个代码块前用try可以抛出错误.在catch代码块中,错误回呗抛出,我们可以查看错误的类型,信息。

do {
    try send(job: 6, toPrinter: "Never has Paper")
} catch  {
    print(error);
}

控制台中就会打印出错误的信息
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值