TransWikia.com

Swiftで配列同士の引き算をしたい

スタック・オーバーフロー Asked by gncc on October 2, 2020

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

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)

出力結果:

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

One Answer

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

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]

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

Correct answer by OOPer on October 2, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP