0

iOS アプリを Swift 3 にリファクタリングするタスクがあります。ただし、for配列を逆方向にループするだけではなく、C スタイルのループがあります (逆方向であることが必須です)。

これはサンプルコードです。原理は同じです。

let array = ["hello", "world", nil, "foo", nil, "bar", "Peter Griffin"]
var threeLetterWords = 0
for var i = array.count-1; i >= 0 && array[i].characters.count == 3; --i, ++threeLetterWords { }
print("Found words: \(threeLetterWords)") // should say `Found words: 2`

試してみましたが、ループ内でインクリメントすることが重要と思われるため、stride(from:through:by:)インクリメントできません。threeLetterWords何か案は?

4

4 に答える 4

0

ここにいる全員が、これを非常に不必要に複雑にしています。

let words = ["hello", "world", nil, "foo", nil, "bar", "Peter Griffin"]

var num3LetterWords = 0

for word in words.reversed() {
    if (word?.characters.count == 3) { num3LetterWords += 1 }
}

print(num3LetterWords)
于 2017-03-08T05:26:07.590 に答える