栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Swift中创建范围?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Swift中创建范围?

为Swift 4更新

Swift范围比复杂

NSRange
,并且在Swift
3中并没有那么简单。如果您想尝试了解这种复杂性背后的原因,请阅读this和this。我将仅向您展示如何创建它们以及何时使用它们。

封闭范围:
a...b

此范围运算符创建一个Swift范围,其中既包含element

a
包含element
b
,即使它
b
是类型(如
Int.max
)的最大可能值。封闭范围有两种不同类型:
ClosedRange
CountableClosedRange


1。
ClosedRange

Swift中所有范围的元素都是可比较的(即,它们符合Comparable协议)。这样就可以访问集合中范围内的元素。这是一个例子:

let myRange: ClosedRange = 1...3let myArray = ["a", "b", "c", "d", "e"]myArray[myRange] // ["b", "c", "d"]

但是,a

ClosedRange
是不可数的(即,它不符合Sequence协议)。这意味着您不能使用循环来遍历元素
for
。为此,您需要
CountableClosedRange

2。
CountableClosedRange

这类似于最后一个,除了现在也可以迭代范围。

let myRange: CountableClosedRange = 1...3let myArray = ["a", "b", "c", "d", "e"]myArray[myRange] // ["b", "c", "d"]for index in myRange {    print(myArray[index])}

半开范围
a..<b

此范围运算符包括element,

a
但 _不_包括element
b
。像上面一样,有两种不同类型的半开范围:
Range
CountableRange

1。
Range

与一样

ClosedRange
,您可以使用来访问集合的元素
Range
。例:

let myRange: Range = 1..<3let myArray = ["a", "b", "c", "d", "e"]myArray[myRange] // ["b", "c"]

同样,您不能对a进行迭代,

Range
因为它仅是可比较的而不是可跨越的。

2。
CountableRange

A

CountableRange
允许迭代。

let myRange: CountableRange = 1..<3let myArray = ["a", "b", "c", "d", "e"]myArray[myRange] // ["b", "c"]for index in myRange {    print(myArray[index])}

NSRange

您仍然可以(必须)

NSRange
有时仍在Swift中使用(例如,在制作属性字符串时),因此了解如何制作一个字符串很有帮助。

let myNSRange = NSRange(location: 3, length: 2)

请注意,这是位置和 长度 ,而不是开始索引和结束索引。此处的示例在含义上与Swift范围相似

3..<5
。但是,由于类型不同,因此不能互换。

带字符串的范围

...
..<
范围内经营者创建范围的简便方法。例如:

let myRange = 1..<3

创建相同范围的长期方法是

let myRange = CountableRange<Int>(uncheckedBounds: (lower: 1, upper: 3)) // 1..<3

您可以看到此处的索引类型为

Int
String
但是,这不起作用,因为字符串是由字符组成的,并且并非所有字符的大小都相同。(有关更多信息,请阅读此内容。)例如
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660401.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号