70726


Swift5でArray同士の要素の引き算を行いたいです。  
以下のように関数を作ってすることはできたのですが、mapなどのSwiftの標準機能を使ったもっと良い方法はないでしょうか？

[code]

    func returnSubtractionTwoArray(Array1:Array<Float>,Array2:Array<Float>) -> Array<Float>
    {
        var returnArray:Array<Float> = []
        for i in 0..<6 {
            returnArray.append(Array1[i]-Array2[i])
        }
        return returnArray
    }
    let firstArray:[Float] = [1.0,1.0,1.0,1.0,1.0,1.0]
    let secondArray:[Float] = [1.0,2.0,3.0,4.0,5.0,6.0]
    let lastArray = returnSubtractionTwoArray(Array1:firstArray,Array2:secondArray)
    print(lastArray)
    
[/code]

出力結果：

[code]

    [0.0, -1.0, -2.0, -3.0, -4.0, -5.0]
    
[/code]


CC BY-SA 4.0
2020-09-26T13:00:35.590
70724
2020-09-26T13:39:42.623
2020-09-26T13:39:42.623
32986
36446
question
swift
Swiftで配列同士の引き算をしたい


ご質問に述べられているようなことは、`zip`関数と`map`を組み合わせることで実現可能です。

[code]

    let firstArray:[Float] = [1.0,1.0,1.0,1.0,1.0,1.0]
    let secondArray:[Float] = [1.0,2.0,3.0,4.0,5.0,6.0]
    let lastArray = zip(firstArray, secondArray)
        .map(-)
    print(lastArray)
    //-> [0.0, -1.0, -2.0, -3.0, -4.0, -5.0]
    
[/code]

* * *

なお、AppleのAccelerateフレームワークにはベクトル演算ライブラリーとして、要素ごとの演算を行うライブラリーが多数用意されていますが、今回の質問のご趣旨とは異なるようなので、存在を紹介するだけに留めておきます。興味がおありでしたら、お調べの上、わからない点はまた別途ご質問ください。


CC BY-SA 4.0
2020-09-26T13:27:44.407
70726
2020-09-26T13:27:44.407
13972
70724
answer