使用通用元素扩展数组

cya*_*ide 1 generics swift

以下结构编译无错误:

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为一个类。任何时候我遇到(不同的)编译错误。

paw*_*222 6

解决方案之一是在Array扩展中创建通用函数:

extension Array {
    func foo<T>() where Element == AIEvaluation<T> {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)