Swift 范围表达式

Swift 范围表达式

不同类型的范围运算符

一个 ** 范围** 是两个数值区间之间的一系列值。 Range 实例可以使用 ** 范围运算符** . Swift 包含几个范围运算符,它们是表示值范围的快捷方式。范围运算符可以包括或排除范围上限,以某个值开始范围,或者可以在某个最大值之前结束。 Swift 中的范围允许我们选择 字符串 , 收藏品 , 和 其他类型 .

**下界** Swift 中的范围实例用于获取范围的最小值或起点 **上界** 用于获取最大值或范围的终点。

封闭范围

封闭范围 操作员 ( 小写大写 ) 定义一个范围从 降低 , 并包括值 降低 .封闭范围运算符操作包含它的下限和上限。

 对于 n 在 3...5 {  
 打印(n)  
 }  
 // 打印“3”  
 // 打印“4”  
 // 打印“5”

封闭范围 可以使用封闭范围运算符 ( ... )。封闭范围运算符的初始值应小于或等于上限值,否则将引发运行时错误。因此 ClosedRange 实例不能表示空范围。

**让** arrInstance:封闭范围<Int>= 0...5  
 打印(arrInstance.contains(3))  
 // **真的** **让** zeroInclusive = 0...0  
 zeroInclusive.contains(0)  
 // **真的**  
 zeroInclusive.isEmpty  
 // **错误的** **让** arrInstance1:封闭范围<Int>= 4...3  
 **//致命错误:范围需要lowerBound <= upperBound**

封闭范围可数闭合范围 大致相同,但以防万一 **** CountableClosedRange 的 **** 这 边界 您指定的应符合 ** 可跨步** 协议和 bound.stride 应符合 有符号整数 这意味着 可数闭合范围 可以创建 诠释 仅限范围。

即使我们迭代一个 双倍的 范围内 换入 循环利用 **步幅(从:到:通过:)** 或者 **大步(从:通过:通过:)** 其中 经过 **:** 参数定义了我们希望在每次迭代中增加的因子。

半开范围

半开范围 操作员 ( 降低.. ) 定义一个范围从 降低 ,但不包括 .

 对于 n 在 3..<5 {  
 打印(n)  
 }  
 // 打印“3”  
 // 打印“4”

半开范围 可以使用半开范围运算符 ( 降低.. )。如果下限值和上限值相同,则半开范围实例可以表示一个空区间。

**让** arrInstance = 0..<5  
 打印(arrInstance.contains(3))  
 // **真的  
** arrInstance.contains(6)  
 // **错误的** 让空 = 0..<0  
 empty.contains(0)  
 // **错误的**  
 空的.isEmpty  
 // **真的** // 在集合中 **为了** n **在** 3..<3 {  
 打印(n)  
 }  
 // 什么都不会打印,因为下限值和上限值相同

资源

单边范围

单面范围 运算符仅在一侧具有值,而另一侧包含直到无限的元素,这就是它被称为的原因 单边范围。 我们可以创造 __ 使用任一的单边范围 ...上 , 降低... 或者 .. 操作员。以下是不同的表达方式 单边范围。

a) PartialRangeUpTo

PartialRangeUpTo 实例是通过使用 ( .. )。 PartialRangeUpTo **** instance 可用于检查某个值是否包含在特定的值范围内。

 让 partialRangeUpTo = ..<5  
 partialRangeUpTo.contains(4)  
 // 真的

您可以使用集合索引的 PartialRangeUpTo 实例来表示从集合开始到(但不包括)部分范围上限的范围。

 让数字 = [10, 20, 30, 40, 50, 60, 70]  
 打印(数字[..<3])  
 // 打印“[10, 20, 30]”

b) 部分范围通过

部分范围通过 实例是通过使用前缀封闭范围运算符 ( ...上 )。部分范围通过 **** instance 可用于检查某个值是否包含在特定的值范围内。

 让 partialRangeThrough = ...5  
 partialRangeThrough.contains(4)  
 // 真的

您可以使用 PartialRangeThrough **** 集合索引的实例,表示从集合开始到(包括)部分范围的上限的范围。

 让数字 = [10, 20, 30, 40, 50, 60, 70]  
 打印(数字[...3])  
 // 打印“[10, 20, 30, 40]”

c) PartialRangeFrom

部分范围自 使用后缀范围运算符 ( 降低.. )。您可以使用部分范围快速检查某个值是否包含在特定范围的值中

 让partialRangeFrom = 5...  
 partialRangeFrom.contains(4)  
 // 错误的 partialRangeFrom.contains(5)  
 // 真的

我们可以使用集合索引的部分范围来表示从部分范围的下限到集合末尾的范围。

 让数字 = [10, 20, 30, 40, 50, 60, 70]  
 打印(数字[3...])  
 // 打印“[40, 50, 60, 70]”

PartialRangeFrom 序列无限向上计数,因此建议不要与在返回之前读取整个序列的方法一起使用,例如 地图(_:) , 筛选(_:) , 或者 后缀(_:) .换句话说,迭代一个 部分范围自 范围 **** 需要手动检查循环应该在哪里结束,否则它会无限期地继续并且程序可能会卡住。

根据用例,所有上述类型的范围运算符都可以与循环 if 条件、数组迭代甚至 switch case 语句一起使用。

要记住的事情

  • 下限值必须小于或等于上限值。
  • 下限和上限值可以是负数。
  • 我们可以使用 for-in 循环遍历范围(不包括单边范围)。
  • 我们可以使用范围运算符来访问数组和集合的元素。

感谢阅读,可以关注我 中等的 对于更新的文章。

如果您有任何意见、问题或建议,请随时在下面的评论部分发表! 请 分享 并给 拍手 如果你喜欢 这个帖子。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/39556/02442712

posted @ 2022-09-27 12:03  哈哈哈来了啊啊啊  阅读(147)  评论(0编辑  收藏  举报