为什么“ +”要求“ RangeReplaceableCollection?

我正在尝试实现一个名为“ Dual”的结构,并在其上重载算术运算符。我希望它适用于Integers和Doubles,因此希望以一般方式对其进行定义将对此有所帮助。目前,我有:

struct Dual<Element: Numeric> {
    var f: Element
    var fPrime: Element

    init(_ f: Element, _ fPrime: Element) {
        self.f = f
        self.fPrime = fPrime
    }

    static func + (left: Dual, right: Dual) -> Dual {
        return Dual(left.f + right.f, left.fPrime + right.fPrime)
    }
}

但是我得到了编译器错误:

Referencing operator function '+' on 'RangeReplaceableCollection' requires that 'Numeric' conform to 'RangeReplaceableCollection'

我计算出建议协议与struct有什么关系,它只是一个有序对。

谁能建议我需要做什么?谢谢!

评论