Почему UInt32(stringArray.count) считает неправильно в функции, но корректен в одиночку на быстрой площадке?

Почему этот код считает 6 элементов, как 9 ("неправильно") на быстрой площадке.

var stringArray = ["1", "2", "3", "4", "5", "6"]

for var i = 0; i < 3; i++ {
    stringArray.append("Paragraph" + "\(i)")
}


func concat (array: [String]) -> String {
    let count = UInt32(stringArray.count)                      ** --> =9 **
    let randomNumberOne = Int(arc4random_uniform(count))
    let randomNumberTwo = Int(arc4random_uniform(count))
    let randomNumberThree = Int(arc4random_uniform(count))

    let concatString = array[randomNumberOne] + array[randomNumberTwo] + array[randomNumberThree]

    return concatString
}

let finalString = concat(stringArray)

... но посчитайте этот код как 6 (правильный)

var stringArray = ["1", "2", "3", "4", "5", "6"]              ** --> =6 **

let count = UInt32(stringArray.count)

Это как-то связано с 64 против 32 бит? У меня Xcode Version 6.0 (6A313).

1 ответ

Решение

Вы добавляете новые элементы к тому же массиву stringArray, в котором уже есть содержимое ["1", "2", "3", "4", "5", "6"]. Затем вы добавляете к нему строку "абзац (i)" 3 раза. Итак, новый контент теперь, ["1", "2", "3", "4", "5", "6", "Параграф 1", "Параграф 2", "Параграф 3"]. Вот как счетчик достиг 9.

Другие вопросы по тегам