Prerequisites for answering this question: view your example
, i i < rawDataOut.count-3, i < rawDataOut.count, rawDataOut[i + 3] w.r.t. . , rawDataOut, , .
, ( )
/* example data */
var rawDataOut = Array(1...40)
var maskPixels = [Int](count: 10, repeatedValue: 0)
/* your pre-Swift 2.2/3.0 loop */
for var i: Int = 0, j: Int = 0; i < rawDataOut.count-3; i += 4, ++j {
maskPixels[j] = rawDataOut[i + 3]
}
print(maskPixels) //[4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
for in ... where
(j=4*i), , j, .
/* example data */
var rawDataOut = Array(1...40)
var maskPixels = [Int](count: 10, repeatedValue: 0)
/* your pre-Swift 2.2/3.0 loop */
for i in 0..<(rawDataOut.count-3) where i%4 == 0 {
maskPixels[i/4] = rawDataOut[i + 3]
}
print(maskPixels) // [4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
, , . 2- , stride enumerate.
stride enumerate
stride, i , (j ). enumerate j, ..
/* example data */
var rawDataOut = Array(1...40)
var maskPixels = [Int](count: 10, repeatedValue: 0)
/* Swift >= 2.2 loop */
for (j, i) in 0.stride(to: rawDataOut.count-3, by: 4).enumerate() {
maskPixels[j] = rawDataOut[i + 3]
}
print(maskPixels) // [4, 8, 12, 16, 20, 24, 28, 32, 36, 40]
, Swift 3 ( 2.2) , stride(to:by:) stride(through:by:) Strideable ( , ) ( Swift 1.2) stride(from:to:by:) stride(from:through:by:), ., , swift/stdlib/public/core/Stride.swift
: while
, , pre-Swift 2.2
for var i: Int = 0, j: Int = 0; i < rawDataOut.count-3; i += 4, j += i { ... }
, , while , , ; , , .
var i = 0, j = 0
while i < rawDataOut.count-3 {
i += 4
j += i
}
, C- , for in, stride .., , , 'while, , .