【发布时间】:2021-05-09 23:23:17
【问题描述】:
给定一个具有两个泛型和多个类型约束初始化器的类型:
struct ComposableRequest <T, U> {
init() {
self.t = defaultT()
self.u = defaultU()
}
var t: T?
var u: U?
private func defaultT() -> T? {
nil
}
private func defaultT() -> T? where T == String {
"Test1"
}
private func defaultT() -> T? where T == Int {
1
}
private func defaultU() -> U? {
nil
}
private func defaultU() -> U? where U == String {
"Test2"
}
private func defaultU() -> U? where U == Int {
2
}
}
我似乎永远无法获得默认电镀方法的类型约束版本:
let first = ComposableRequest<String, Int>()
print(first.t) // I'd expect this to be `"Test1"`, but its nil!
print(first.u) // I'd expect this to be `2`, but its nil!
当满足多个类型约束选项时,Swift 如何决定使用哪些类型约束方法?如果选择的方法不明确,这段代码是否应该编译?如何调用更专业的版本?
【问题讨论】:
标签: ios swift generics type-constraints