0
1

More than 1 year has passed since last update.

【Swift】Binary operator '/' cannot be applied to two 'T' operands

Last updated at Posted at 2022-07-17

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1