乗算記号の定義はこれです。関数については、数学記号関数*が異なって呼び出されます。どうして?
public func *(lhs: Int, rhs: Int) -> Int
このような関数で使用できます。
func productUsingReduce(xs: [Int]) -> Int {
return xs.reduce(1, { x,y in x * y})
}
またはこれに類似しています。
func productUsingReduce(xs: [Int]) -> Int {
return xs.reduce(1, *)
}
別の名前で同じものを定義しようとするとします。
func yes(lhs: Int, rhs: Int) -> Int {
return lhs * rhs
}
このように使用しようとすると、コンパイラエラーが発生します。
func productUsingReduce(xs: [Int]) -> Int {
return xs.reduce(1, { x,y in x yes y})
}
なぜですか?
なぜ、次のsytnaxはコンパイルされませんか?
func productUsingReduce(xs: [Int]) -> Int {
return xs.reduce(1, { x, y in *(lhs: x, rhs: y) })
}