Quelle est la bonne façon de déclarer une fonction qui renvoie une séquence en Swift 4. J'ai essayé ce qui suit mais j'ai reçu une erreur disant :
erreur : Models.playground:29:13 : error : cannot convert return expression of type 'Cars' to return type 'S' (erreur : ne peut pas convertir l'expression de retour de type 'Cars' en type de retour 'S') return Cars(cars) ^
~~~~~ as ! S
Voici le code que j'ai utilisé :
import Foundation
struct Car {
let make:String
let model:String
}
class Cars: Sequence, IteratorProtocol {
typealias Element = Car
var current = 0
let cars:[Element]
init(_ cars:[Element]) {
self.cars = cars;
}
func makeIterator() -> Iterator {
current = 0
return self
}
func next() -> Element? {
if current < cars.count {
defer { current += 1 }
return cars[current]
} else {
return nil
}
}
}
let cars = Cars([Car(make:"Buick", model:"Century"), Car(make:"Buick", model:"LaSabre")])
func getCars<S:Sequence>(cars:[Car]) -> S where S.Iterator.Element == Car {
return Cars(cars)
}