工作生活

where的使用场合

2019-06-30  本文已影响0人  盖小聂

在switch语句中,我们可以使用where来限定某些条件case

let name = ["王小二","张三","李四","王二小"]
name.forEach {
    switch $0 {
    case let x where x.hasPrefix("王"):
        print("\(x)是笔者本家")
    default:
        print("你好,\($0)")
    }
}

在if let中也可以使用where来做类似的条件限定,不过现在在if let中where已经被逗号取代了

let nums: [Int?] = [48,99,nil]
nums.forEach {
    if let score = $0, score > 60 {
        print("及格啦 ~ \(score)")
    } else {
        print(":(")
    }
}

在for中可以使用where来做类似的条件限定

let nums2 = [48,99,50]
for score in nums2 where score > 60 {
    print("及格啦 ~ \(score)")
}

在泛型中对方法的类型进行限定时

public func !=<T: RawRepresentable>(lhs: T, rhs: T) -> Bool where T.RawValue: Equatable {
    return lhs.rawValue != rhs.rawValue
}

有些时候,我们会希望一个接口扩展的默认实现只是在某些特定条件下适用,这个可以使用where关键字

extension Sequence where Self.Iterator.Element: Comparable {
    public func sort() -> [Self.Iterator.Element] {
        //……
    }
}

小结如下:
where的使用场合

上一篇 下一篇

猜你喜欢

热点阅读