Swift where关键字的使用

来源:互联网 发布:手机格机软件 编辑:程序博客网 时间:2024/06/01 09:44

在一些Swift开源库里经常能看到 where 关键字的使用,但是查找开发文档的时候又找不到这个关键字。为了方便使用,这边总结了一些where关键字的用法。

1、用在do catch里面

enum ExceptionError:Error{    case httpCode(Int)}func throwError() throws {    throw ExceptionError.httpCode(500)}//do catchdo{    try throwError()}catch ExceptionError.httpCode(let httpCode) where httpCode >= 500{    print("server error")}

2、用在switch里面

//switchvar value:(Int,String) = (1,"小明")switch value {case let (x,y) where x < 60:    print("不及格")default:    print("及格")}

3、for in

// for inlet arrayOne = [1,2,3,4,5]let dictionary = [1:"hehe1",2:"hehe2"]for i in arrayOne where dictionary[i] != nil {    print(i)}

4、与范型结合

//第一种写法func genericFunction<S>(str:S) where S:ExpressibleByStringLiteral{    print(str)}//第二种写法func genericFunction<S:ExpressibleByStringLiteral>(str:S){    print(str)}

5、与协议结合

//protocolprotocol aProtocol{}extension aProtocol where Self:UIView{    //只给遵守myProtocol协议的UIView添加了拓展    //强大的协议拓展  可以给协议添加默认实现   面向协议编程的基础    func getString() -> String{        return "string"    }}class MyView:UIView{}extension MyView:aProtocol{}let myView = MyView()let aStr = myView.getString()
注意:以下是Swift3.0取消的 where 写法

本来在while循环中也能使用的where,现在变成了这个样子\
1、while

//while   swift2.0中的写法var arrayTwo:[Int]? = []while let arr = arrayTwo where arr.count < 5 {    arrayTwo?.append(1)}//Swift3.0的写法var arrayTwo:[Int]? = []while let arr = arrayTwo , arr.count < 5 {    arrayTwo?.append(1)}

2、if 和 guard

// swift2.0中的写法``let sString = ""if let str = sString where str == ""{}let string:String? = "小刚"guard let str = string where str != "小明" else {    fatalError("g看错人了") //}print("确实是小明")

合理的利用where关键字会令代码有更高的可读性、更高的简便性、更时尚。

原创粉丝点击