Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Arrays Swift数组边界检查优化的工作原理_Arrays_Swift_Bounds - Fatal编程技术网

Arrays Swift数组边界检查优化的工作原理

Arrays Swift数组边界检查优化的工作原理,arrays,swift,bounds,Arrays,Swift,Bounds,我在看。它提到Swift确保数组访问在边界内进行。Swift可以将支票从循环中取出。使O(n)检查变成O(1) 谈话中的示例如下所示: //Before Optimization for i in 0..<n { precondition (i < length) A[i] ^= 13 } //After Optimization precondition (i < length) for i in 0..<n { A[i] ^= 13 } /

我在看。它提到Swift确保数组访问在边界内进行。Swift可以将支票从循环中取出。使O(n)检查变成O(1)

谈话中的示例如下所示:

//Before Optimization
for i in 0..<n {
    precondition (i < length)
    A[i] ^= 13
}

//After Optimization
precondition (i < length)
for i in 0..<n {
    A[i] ^= 13
}
//优化前

对于0中的i.谈话中的示例显示了Premission()的使用,但您的代码似乎没有使用Premission()

谈话中的示例显示了Premission()的使用,但您的代码似乎没有使用Premission()

请将WWDC 2015会话409链接到其内容(最好也使用带回标记的内联代码)通过检查循环中的长度,您将执行多次检查,并且它将迭代所有数组元素。如果在循环之前移动先决条件,如果先决条件不满足,它甚至不会开始迭代。为什么您希望收到警告?直到运行时,数组的计数仍然未知。请e WWDC 2015 session 409一个指向其内容的链接(最好也使用带回标记的内联代码)通过检查循环中的长度,您将执行多次检查,并且它将迭代所有数组元素。如果在循环之前移动先决条件,如果先决条件不满足,它甚至不会开始迭代。为什么您希望得到警告?直到运行时,数组的计数仍然未知。我认为OP的意思是先决条件应该由编译器插入。这显然不是,但我可以从视频中呈现的方式看出为什么有人会这么想。我误解了。我以为编译器会进行检查。我认为OP的意思是先决条件应该由编译器插入。显然不是,不是但我可以从视频中看到为什么有人会这么想。我误解了。我以为编译器会做检查。
 var a = Array(1...5)

 for i in 0..<6 {
     a[i] ^= 13
 }