首页 > 其他分享 >Swift 中的Range类型和 Range运算符

Swift 中的Range类型和 Range运算符

时间:2023-09-10 16:33:20浏览次数:38  
标签:PartialRangeFrom .. ClosedRange range 运算符 Range let Swift

Swift 中的Range类型和 Range运算符

赵邦华IP属地: 广东 0.3312020.10.11 22:50:49字数 574阅读 5,198

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]
  最后编辑于 :2020.10.11 23:00:44

标签:PartialRangeFrom,..,ClosedRange,range,运算符,Range,let,Swift
From: https://www.cnblogs.com/sexintercourse/p/17691438.html

相关文章

  • 重载运算符/重载函数
    所谓重载就是让命名空间原有的符号或者函数重新装载新的功能,体现了C++的多态特性比如原先的加法运算符"+"可以重载成其他用法,运算符的重载方式[返回类型]operator[重载符号]([形参]){//功能} 重载函数则直接以保持同样的函数名,修改函数功能、函数形参(可选)、......
  • Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位运算符
    Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运算符,有算术运算符,比较运算符,赋值运算符,逻辑运算符,位算符等等。算术运算符算术运算符是Python......
  • Python教程(13)——Python运算符详解|算术运算符|比较运算符|逻辑运算符|位运算符
    Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比较、逻辑和其他类型的运算。我们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运算符,有算术运算符,比较运算符,赋值运算符,逻辑运算符,位算符等等。算术运算符算术运算符是Python......
  • 深入解析Java中的数组复制:System.arraycopy、Arrays.copyOf和Arrays.copyOfRange
    当涉及到在Java中处理数组时,有许多方法可供选择,其中一些包括System.arraycopy()、Arrays.copyOf()和Arrays.copyOfRange()。这些方法允许您在不同的数组之间复制数据,但它们之间有一些细微的差异。在本篇博客文章中,我们将深入探讨这些方法,以便您了解何时使用它们以及如何正确使用它......
  • 支持 range-based for 循环的链式前向星模板
    众所周知,OI中图的存储主要有两种方式:使用std::vector实现的邻接表,以及链式前向星。前者的常数较大,有时候会出现卡不过去的情况,但是支持range-basedfor循环,遍历的时候代码更简洁。可不可以在使用链式前向星的同时,使用range-basedfor循环呢?如以下代码所示:Graphgraph;int......
  • C++中的typeid运算符
    typeid运算符用来获取一个表达式的类型信息。类型信息对于编程语言非常重要,它描述了数据的各种属性:对于基本类型(int、float等C++内置类型)的数据,类型信息所包含的内容比较简单,主要是指数据的类型。对于类类型的数据(也就是对象),类型信息是指对象所属的类、所包含的成员、所在的继承......
  • 运算符
    title:运算符index_img:https://picss.sunbangyan.cn/2023/07/30/stdtw2.jpgtags:-JavaSEcategories:-JavaSEhide:falseexcerpt:运算符、类型转换、原码、反码、补码。算数运算符+、-、*publicclassMain{publicstaticvoidmain(String[]args){......
  • 关于 TypeScript 展开运算符在 Angular 应用开发中的应用一例
    笔者最近一直在SAP中国研究院从事Angular开发,我所在的团队负责使用Angular开发SAPCommerceCloud这款产品的界面,项目代号为Spartacus.这是一个开源项目,我们项目的Github地址如下。最近我处理了一个bug,我的代码改动放在这个PullRequest里。下面是这个PullReque......
  • 深入理解 Python and 逻辑运算符(踩坑)
    1.引子defenabled()->bool:a=["a,"b"] b=Truec=Falsereturn(bandc)or(banda)以上代码返回什么?实际生产项目踩到的坑,也怪自己没理解到未,才疏学浅!!!想当然的以为python自己会做真值判断了。其实真值判断是在if条件语句时会生效,但在普通的......
  • Orange Pi 3B 开发板 开箱评测 和 系统安装教程
    香橙派OrangePi3B(RK3566)开发板开箱测评和系统烧录教程简介香橙派OrangePi3B是一款树莓派大小的单板计算机,但接口更加齐全,包括一个全尺寸HDMI接口和一个M.2存储插槽,售价199起。OrangePi3B采用了瑞芯微RK3566四核64位Cortex-A55处理器,采用的22nm工艺,主频最高......