阅读 354

Swift 区间运算符(Range)

在本文中,您将了解Swift的Range,类型和用例。

Range(区间)是值的间隔。一个简单的范围示例是0、1、2、3、4、5、6、7、8、9,因为数字从0到9是连续的。

我们可以使用下面描述的两个范围运算符快速创建区间:

1.闭区间运算符(lowerBound ... upperBound)

它包括间隔(lowerbound到upperBound)中的所有值。使用…(3个点)运算符声明。

例如: 1...3 定义包含值为1,2,3的范围

2.半开区间运算符(lowerBound .. <upperBound)

它包括区间(lowerbound到upperBound)中的所有值,但不包括最后一个(upperBound)数。使用 ..< 运算符声明它。

例如: 1..<3 定义包含值1和2的范围

区间类型

1.封闭区间(lowerBound ... upperBound)

使用封闭区间运算符创建的范围称为封闭区间。它包括从下限到上限的所有值。

示例1:使用for-in循环打印闭合区间值

示例

//1... 3定义包含值1、2和3的范围for value in 1...3 {	print(value)
}

运行该程序时,输出为:

123

上面的示例创建了一个包含1到3(1...3)的数字的范围。我们使用了一个for-in循环来查看范围包含哪些值。要了解有关for-in循环的更多信息,请访问Swift for-in循环。

使用for-in循环,我们可以看到封闭区间包含给定范围内的所有值,包括下限(1)和上限(3)。

2.半开区间(lowerBound .. <upperBound)

使用半开区间运算符创建的区间称为半开区间。它包括从下限到上限的所有值,但不包括上限值。

示例2:使用for-in循环打印半开区间值

示例

// 1..<3 定义一个包含值的范围 1,2for value in 1..<3 {	print(value)
}

运行该程序时,输出为:

12

在上面的示例中,我们使用了for-in循环来查看半开区间的工作原理。

不用打印所有值,我们可以清楚地看到使用半开区间运算符仅打印1和2,并且不包括上限值(即3)。

3.单侧区间

单侧区间是指在一个方向上尽可能连续的区间。可以使用半开范围区间运算符和闭合区间运算符来创建它,但运算符只能在一侧具有值。

示例3:单侧区间小于2

示例

let range = ..<2print(range.contains(-1))print(range.contains(2))

运行该程序时,输出为:

truefalse

上面的示例使用半开区间运算符创建一个单侧区间,该区间包含小于2的任何数字。

为了验证我们的结果,我们使用了 contains 方法。如果元素位于区间内,则 contains 方地返回true,否则返回false。

range.contains(-1) 检查 -1 是否在区间内。由于其单侧区间的上限为2 且-1 <2,因此它位于区间内,并且语句print(range.contains(-1)) 在屏幕中输出true。

但是,由于使用半开区间运算符,上限值(2)不包含在区间内。因此,range.contains(2) 返回 false。

示例4:从2开始的单侧区间

示例

let range = 2...print(range.contains(100))print(range.contains(1))

运行该程序时,输出为:

truefalse

上面的示例使用封闭区间运算符创建一个单侧区间,该范围包含从2到大于2的任何值的数字。

range.contains(100) 检查100是否在区间内。由于是单侧区间,并且100大于2,因此它位于范围内,并在屏幕上打印输出 true。

但是,它具有下限值(2),因此 range.contains(1) 返回false。

注意事项

  • 区间的起点必须小于或等于其终点。在我们的示例中 (lowerBound...upperBound) ,下限值必须小于上限值。但是,它可以是负值。
    例如:

    3...1  // 错误:无法使用upperBound <lowerBound形成Range-3...1 // 这是一个有效区间。Lowerbound/Upperbound 可以包含负值。
  • 我们可以使用for-in循环遍历整个区间(不包括单侧区间)。

  • 我们还可以使用区间运算符访问数组的元素。


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐