Binary operator '/' cannot be applied to two 'T' operands
解決策
ジェネリクスで割り算をしようと以下のコードを記述するとBinary operator '/' cannot be applied to two 'T' operandsというエラーが出た。
解決策は使用するプロトコルをNumericからFloatingPointに変更することです。
// errorが発生する。
func divide<T: Numeric>(num1: T, num2: T) -> T {
return num1 / num2
}
// errorが発生しない。
func divide<T: FloatingPoint>(num1: T, num2: T) -> T {
return num1 / num2
}
原因
ドキュメントを確認すると、Numericプロトコル自体は乗算(掛け算)しかサポートしていなく、AdditiveArithmeticプロトコルを準拠していることで加算(足し算)と減算(引き算)を使用できるみたいです。
そのためNumericプロトコルでは除算(割り算)は使用できず、四則演算をサポートするためにはFloatingPointプロトコルを使用する必要があります。
参考
https://developer.apple.com/documentation/swift/numeric
https://developer.apple.com/documentation/swift/floatingpoint
https://stackoverflow.com/questions/47263849/binary-operator-cannot-be-applied-to-two-t-operands