我正在尝试实现一个名为“ 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有什么关系,它只是一个有序对。
谁能建议我需要做什么?谢谢!