2015-08-13 2 views
1

Я пытаюсь выработать пример, который предоставляется на developer.apple.com website 'Swift Playground'. Мне пришлось немного адаптировать его, так как swift 2 - это то, что похоже на то, что он отличается от переменных «inout». В примере, показанном в презентации 'inout', не было использовано в объявлении функции. В любом случае результат «данных» не отображается на игровой площадке, хотя код не показывает ошибок компиляции.Пример сортировки результатов Swift не отображается на игровой площадке

import UIKit 

var data = [16, 97, 13, 55, 95, 53, 18, 10, 79, 53, 79, 34, 50, 34, 0, 91, 94, 55, 6, 38, 7] 

func exchange<T>(inout data:[T], i: Int, j: Int) { 
    let temp = data[i] 
    data[i] = data[j] 
    data[j] = temp 
} 

func swapLeft<T: Comparable>(inout data: [T], index: Int) { 
    for i in reverse(1...index) { 
     if data[i] < data[i-1] { 
      exchange(&data, i, i-1) 
     }else { 
      break 
     } 
    } 
} 

func isort<T: Comparable>(inout data: [T]) { 
    for i in 1...data.count { 
     swapLeft(&data,i) 
    } 
} 
data //result [16, 97, 13, 55, 95, 53, 18, 10, 79, 53, 79, 34, 50, 34, 0, 91, 94, 55, 6, 38, 7] 
isort(&data) 
data //no result shown 

Скриншот Screenshot Playground

+2

Я думаю, что вы получили правильный ответ сейчас, но как дополнительный намек: Вы могли бы найти ошибку себя в «помощник редактора» (View -> Помощник редактора -> Показать помощника редактора). Кроме того, если на игровой площадке что-то не так, я могу только рекомендовать протестировать код в скомпилированном проекте (лучшие сообщения об ошибках, лучшие возможности для отладки). –

ответ

2

Это не показывает результат, потому что он сбой с Индекс массива за пределами допустимого диапазона. Попробуйте это для isort:

func isort<T: Comparable>(inout data: [T]) { 
    for i in 1..<data.count { 
     swapLeft(&data,i) 
    } 
} 
+1

@OlivierdeJonge: Если вы не используете старую версию Xcode, она должна быть '1 ..

+0

Оператор полуоткрытого диапазона был изменен с '..' на' .. <'7 июля 2014 года согласно Swift iBook. Это был Xcode 6.0 beta 3. Очень древний. – vacawama

+0

Спасибо вам, все мои проблемы были опечаткой .. вместо .. < –

1

Вы всегда можете использовать println(data)

Убедитесь, что Debug Area показано. См. this post для получения дополнительной информации.

+0

добавил скриншот, println не помогает –

Смежные вопросы