以下结构编译无错误:
struct AIEvaluation<T> : CustomDebugStringConvertible where T: CustomDebugStringConvertible {
var param: T
var value: Double
var debugDescription: String {
return param.debugDescription + ": " + String(format: "%.2f", value)
}
}
Run Code Online (Sandbox Code Playgroud)
[AIEvalution<T>]是否可以为T 仍然是泛型类型的数组编写扩展?
尝试了以下方法:
extension Array where Element == AIEvaluation {...}
extension Array where Element == AIEvaluation<T> {...}
extension Array where Element == AIEvaluation<T> where T:CustomDebugStringConvertible {...}
extension <T:CustomDebugStringConvertible> Array where Element == AIEvaluation<T> {...}
Run Code Online (Sandbox Code Playgroud)
和别的。还尝试重新定义AIEvaluation为一个类。任何时候我遇到(不同的)编译错误。
解决方案之一是在Array扩展中创建通用函数:
extension Array {
func foo<T>() where Element == AIEvaluation<T> {
...
}
}
Run Code Online (Sandbox Code Playgroud)