Я пытаюсь перейти с Java на Swift и улучшить свои навыки программирования на этом языке.
Однако у меня возникают некоторые трудности с пониманием того, как дженерики работают в Swift после изучения:
https://docs.swift.org/swift-book/LanguageGuide/Generics.html
Я начал писать алгоритм geneti c, написав несколько протоколов.
protocol Point : Equatable {
var identifier: String { get }
var x: Double { get }
var y: Double { get }
func distance<P : Point>(to point: P) -> Double
}
protocol Individual {
associatedtype P : Point
var fitness: Double { get }
var chromosomes: [P] { get }
}
и теперь я хочу создать структуру который соответствует Индивидуальному протоколу.
Единственная попытка компилирования:
struct Route : Individual {
typealias P = City;
var fitness: Double { 0.0 }
var chromosomes: [City]
}
Однако я хочу сделать Route столько же, сколько generi c, поэтому я не хочу скажи что он использует City как реализацию Point. Я хочу, чтобы Route знал, что он работает с массивом объектов, который соответствует протоколу Point.
Буду признателен за вашу помощь.
Заранее спасибо.