スタック・オーバーフロー 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]
ご質問に述べられているようなことは、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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP