func multiply<T: Strideable> (lhs: T, rhs: T) -> T {
return lhs * rhs
}
为什么返回错误: 没有'*'候选者产生预期的上下文结果结果类型'T'
答案 0 :(得分:0)
通过将*运算符扩展为Double,Int和Float类型找到了解决方法。
protocol Numeric {
func *(lhs: Self, rhs: Self) -> Self
}
extension Double: Numeric {}
extension Float: Numeric {}
extension Int: Numeric {}
答案 1 :(得分:0)
查看Strideable协议,它没有方法''。如果你想要它以便'T'可以乘以另一个'T',你应该以'T'有''的方式声明它。
func multiply<T: Strideable> (lhs: T, rhs: T) -> T where T:IntegerArithmetic {
return lhs * rhs
}
或者,你也可以像其他答案所说的那样做,因为使用这种方法你只能使用整数。