新しい演算子を定義し、配列[Int]
の各要素にInt
(例えば、[3, 2, 10] * 10
)を掛けたいとします。Swiftでカスタム演算子を使用して[Int] * Intを定義することはできますか?
Int
はどちらのプロトコルもクラス(それの構造体)であるため、しかし、私は最初に次のように定義される:
protocol Numeric {}
extension Int: Numeric {}
extension Double: Numeric {}
extension Float: Numeric {}
そして、私のような、オペレータを定義しようとした:
func *<T: Numeric> (left: [T], right: T) -> [T] {
var newArray: [T] = []
for i in left {
newArray.append(i * right)
}
return newArray
}
しかし、これはエラー:Cannot convert value of type 'T' to expected argument type '[_]'
を吐き出します。
私は私ががを期待していないが、私は問題があり、どちらも、私はT
とT
を取る定義された演算子を持っていないことから来ていると思うタイプ[_]
手段、わからないんだけどこの場合はNumeric
となります。
func *<T: Numeric> (left: T, right: T) -> T {
return left * right
}
、実行時エラーがstatic * infix <A where ...> (A, A) -> A
の多くがたくさん発生しました。 Int
はすでに*
オペレータを持っていないものの、
、この作業は非常に多くの時間を実行した理由私はわからないんだけど、今はそれがカスタム*
演算子を定義するための最初の場所で可能ですかしら定義された。
Swiftで[Int] * Int
演算子を定義することはできますか?
にOooohのそれは超素晴らしいです。さて私はマップを使って最初にそれを定義しようとしましたが、私が壁に衝突した後、問題がマップから来ないことを確認するのがより簡単になりました。本当にありがとう。 – Blaszard