Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift范围的行为类似于NSRange,不包括endIndex_Swift - Fatal编程技术网

Swift范围的行为类似于NSRange,不包括endIndex

Swift范围的行为类似于NSRange,不包括endIndex,swift,Swift,我遇到了一些古怪的Range行为,现在我开始质疑我在Swift中所知道的关于Range的一切 let range = Range<Int>(start: 0, end: 2) print(range.count) // Prints 2 我希望slice包含ABC,因为范围的结束索引是2,但是slice实际上包含AB,它确实对应于range.count==2,但由于范围的endIndex==2,应该包含C,所以不加起来 我错过了什么 我使用的是Xcode 7.2版本的Swift,而

我遇到了一些古怪的
Range
行为,现在我开始质疑我在Swift中所知道的关于
Range
的一切

let range = Range<Int>(start: 0, end: 2)
print(range.count) // Prints 2
我希望
slice
包含
ABC
,因为范围的结束索引是2,但是
slice
实际上包含
AB
,它确实对应于
range.count==2
,但由于范围的
endIndex==2
,应该包含
C
,所以不加起来

我错过了什么


我使用的是Xcode 7.2版本的Swift,而不是任何开源版本。

Swift中的范围对象
Range
,默认情况下,显示为半开放间隔
[start,end)
,即Swift中的范围对象
Range
,默认情况下显示为半开放间隔
[开始,结束)
,即
开始..我在
范围
文档中没有看到任何指示它是闭合-打开间隔的内容。是只有我还是
(开始:t,结束:t)
语法表明它将包括结束索引?它不是很清楚,但它是在
范围的语言ref中
。请参阅1分钟后编辑。@LeoDabus我认为从上面已经很清楚了,但也许我应该明确提到该赋值方法?感谢您指出这一点(但下次请在代码注释旁边使用一些额外的词,这样我就知道这是批评还是只是一些很酷的东西的提示!)@dfri是的,请继续,我想你们应该提到,他可以简化范围声明,就像这样做this@jamone这完全是人为的,特别是如果你需要使用它,因为它是在startIndex中为i做的for循环中。我在
范围
文档中没有看到任何指示它是闭合-打开间隔的内容。只有我吗或者
(开始:T,结束:T)
语法表明它将包括结束索引?它不是很清楚,但它是在
范围的语言ref中
。请参阅1分钟后编辑。@LeoDabus我认为从上面已经很清楚了,但也许我应该明确提到该赋值方法?感谢您指出这一点(但下次请在代码注释旁边使用一些额外的词,这样我就知道这是批评还是只是一些很酷的东西的提示!)@dfri是的,请继续,我想你们应该提到,他可以简化范围声明,就像这样做this@jamone这完全是人为的,特别是如果您需要使用它,因为它是在startIndex中为i在for循环中完成的。。
let array = ["A", "B", "C", "D"]
let slice = array[range]
let range = Range<Int>(start: 0, end: 2)
print(range) // 0..<2
let range = 0..<2
print(range) // 0..<2  (naturally)
let range = 0...1
print(range) // 0..<2 
for i in startIndex..<endIndex {
    let x = self[i]
}