den folgenden Code vor:Protokolltyp nicht instanziiert werden kann
protocol Color {
var color: UIColor { get }
}
struct Ball : Color {
var color: UIColor
}
let ball = Ball(color: .white)
print(ball)
Dies funktioniert, und die Ergebnisse in:
Ball(color: UIExtendedGrayColorSpace 1 1)
Nun, ich möchte eine Funktion im Protokoll machen, dass angesichts einer Palette von Farben, gibt ein Array von Gegenständen (Kugeln, oder jede andere Art, den Color
entspricht) mit dieser Farbe:
extension Color {
func multipleColors(colors: [UIColor]) -> [Color] {
var coloredItems = [Color]()
for item in colors {
// What do I put here ???
}
return coloredItems
}
}
und dann:
let coloredBalls = ball.multipleColors(colors: [.red, .green, .blue])
Ich kann nicht herausfinden, was in den Klammern zu setzen. Zum Beispiel (kein Wortspiel), wenn ich versuche:
coloredItems.append(Color(color: item))
der Fehler ist:
'Color' cannot be constructed because it has no accessible initializers
ich dann eine Init-Methode zu dem Protokoll hinzugefügt, und der Fehler folgendermaßen geändert:
protocol type 'Color' cannot be instantiated
Wie behebe ich das?
Sie versuchen, eine Instanz eines Protokolls 'Farbe zu erstellen (Farbe: Artikel)', was nicht möglich ist. – shallowThought
Also irgendwelche Ideen, wie man das ändert? – Koen
Es ist nicht klar, was genau Sie erwarten, dass die Ausgabe Ihrer 'multipleColors'-Funktion ist. Was ist das eigentliche Problem, das du hier zu lösen versuchst? – Hamish