So for anyone else looking how to convert the initial imperative implementation to Swift 3 compatible code, here is what I did:
func sortedNames(rides: [Ride]) → [String] {
var sortedRides = rides
// 1 - Looping over all the rides passed into the function
for (index, sortedRide) in sortedRides.enumerated() {
// 2 - Performing an insertion sort
for j in stride(from: index, to: -1, by: -1) {
if sortedRide.name.localizedCompare(sortedRides[j].name) == .orderedAscending {
sortedRides.remove(at: j + 1)
sortedRides.insert(sortedRide, at: j)
}
}
}
// 3 - Gathering the names of the sorted rides
var sortedNames = String
for ride in sortedRides {
sortedNames.append(ride.name)
}
// print(sortedRides)
return sortedNames
}
func quicksort<T: Comparable>(var elements: [T]) -> [T] {
if elements.count > 1 {
let pivot = elements.removeAtIndex(0)
return quicksort(elements.filter { $0 <= pivot }) + [pivot] + quicksort(elements.filter { $0 > pivot })
}
return elements
}
…produce an error “parameters may not have the ‘var’ specifier
func quicksort<T: Comparable>(var elements: [T]) → [T] {”
This tutorial is more than six months old, so questions regarding it are no longer supported for the moment. We will update it as soon as possible. Thank you! :]