美文网首页Swift Swift
Swift 中的Range类型和 Range运算符

Swift 中的Range类型和 Range运算符

作者: 赵邦华 | 来源:发表于2020-10-11 22:50 被阅读0次

    Swift中有五个最常用的Range类型:
    • ClosedRange: a...b
    • Range a..<b
    • PartialRangeThrough: ...b
    • PartialRangeFrom: a...
    • PartialRangeUpTo: ..<b

    对应的,有五个Range运算符,用来定义上面的Range类型
    • Closed Range Operator: a...b
    • Half-Open Range Operator: a..<b
    • Prefix Closed Range Operator: …b
    • Postfix Closed Range Operator: a…
    • Prefix Half-Open Range Operator: ..<b

    ClosedRange

    ClosedRange类型代表一个闭区间 [a, b]
    其声明是:

    struct ClosedRange<Bound> where Bound : Comparable
    

    我们可以用 closed range operator (a...b) 创造一个ClosedRange实例

    let closedRange: ClosedRange<Double> = 1.2...6.3
    

    我们可以检查一个值是否在一个ClosedRange范围内

    closedRange.contains(3.6)
    // true
    

    如果一个ClosedRange用整数作为其边界,我们可以把它用在for-in loop中

    for i in -1…2 {
        print(i)
    }
    // -1
    // 0
    // 1
    // 2
    

    Range

    Range类型代表一个右半开区间 [a, b),注意这里只能是右边开区间,左边必须是闭区间
    其声明是:

    struct Range<Bound> where Bound : Comparable
    

    我们可以用 half-open range operator (a..<b)创造一个Range实例

    let range: range<Double> = 1.2..<6.3
    

    我们可以检查一个值是否在一个Range范围内

    range.contains(3.6)
    // true
    range.contains(6.3)
    // false, 因为上界是开区间
    

    如果一个Range用整数作为其边界,我们可以把它用在for-in loop中

    for i in -1..<2 {
        print(i)
    }
    // -1
    // 0
    // 1
    

    PartialRangeThrough

    PartialRangeThrough 类型代表一个左边界无穷的闭区间 (-infinite, b]
    其声明是:

    struct PartialRangeThrough<Bound> where Bound : Comparable
    

    我们可以用 prefix closed range operator (…b)创造一个PartialRangeThrough实例

    let partialRangeThrough: PartialRangeThrough<Double> = …6.3
    

    我们可以检查一个值是否在一个partialRangeThrough范围内

    partialRangeThrough.contains(3.6)
    // true
    partialRangeThrough.contains(6.3)
    // true
    

    如果一个PartialRangeThrough用整数作为其边界,我们可以用它代表一个 collection 类型的索引 (从 0 到上边界)

    let numbers = [10, 20, 30, 40, 50, 60, 70]
    print(numbers[...3])
    // [10, 20, 30, 40]
    

    PartialRangeFrom

    PartialRangeFrom 类型代表一个右边界无穷的闭区间 [a, +infinite)
    其声明是:

    struct PartialRangeFrom<Bound> where Bound : Comparable
    

    我们可以用 postfix closed range operator (a…)创造一个PartialRangeFrom实例

    let partialRangeFrom: PartialRangeFrom<Double> = 1.2…
    

    我们可以检查一个值是否在一个PartialRangeFrom范围内

    partialRangeFrom(1.2)
    // true
    partialRangeFrom(6.3)
    // true
    

    如果一个PartialRangeFrom用整数作为其边界,我们可以用它代表一个 collection 类型的索引 (从下边界到结束)

    let numbers = [10, 20, 30, 40, 50, 60, 70]
    print(numbers[3…])
    // [40, 50, 60, 70]
    

    PartialRangeUpTo

    PartialRangeUpTo 类型代表一个左边界无穷的开区间 (-infinite, b)
    其声明是:

    struct PartialRangeUpTo<Bound> where Bound : Comparable
    

    我们可以用 prefix half-open range operator (..<b)创造一个PartialRangeUpTo实例

    let partialRangeUpTo: PartialRangeUpTo<Double> = ..<6.3
    

    我们可以检查一个值是否在一个PartialRangeUpTo范围内

    partialRangeUpTo(1.2)
    // true
    partialRangeUpTo(6.3)
    // false, 因为上界是开区间
    

    如果一个PartialRangeUpTo用整数作为其边界,我们可以用它代表一个 collection 类型的索引 (从0到上边界-1)

    let numbers = [10, 20, 30, 40, 50, 60, 70]
    print(numbers[..<3])
    // [10, 20, 30]
    

    相关文章

      网友评论

        本文标题:Swift 中的Range类型和 Range运算符

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