【发布时间】:2020-05-03 06:25:44
【问题描述】:
我正在尝试从 Java 切换到 Swift 并提高我使用这种语言的编程技能。
但是,在研究了以下内容后,我很难理解泛型在 Swift 中的工作原理:
https://docs.swift.org/swift-book/LanguageGuide/Generics.html
我已经开始通过编写一些协议来编写遗传算法。
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 }
}
现在我想创建一个符合 Individual 协议的结构。
编译的唯一尝试是
struct Route : Individual {
typealias P = City;
var fitness: Double { 0.0 }
var chromosomes: [City]
}
但是,我想让 Route 尽可能通用,因此我不想说它使用 City 作为 Point 的实现。我希望 Route 知道它适用于符合 Point 协议的对象数组。
感谢您的帮助。
提前谢谢你。
【问题讨论】:
标签: swift generics protocols genetic-algorithm