私はすべてのUITouchで実行したいクロージャの配列を持っているとしましょう。ネストされたforeach文があります私のことをスウィフト - ネストされたfor each closuresを避ける?
touches.filter { touch in
return touch.phase == .Ended && touch.tapCount == 1
}.forEach { touch in
actionsOnTap.forEach { action in
action(touch)
}
}
それのバグ、と私はそのような場合のために正確に適用することができ、いくつかのクリーンな方法はありだと思うが、私はそれを考えることはできません。 は、ここに私が使用するコードです。誰も私にヒントを与えることができますか?
フィルタ部は、次のようになります。 'touches.filter {$ 0.phase == .Ended && $ 0.tapCount == 1}おそらく排除することができる' – Daniel
'filter'をまとめて' forEach'の 'guard'に置き換えてください。これにより、インデントが減少し、効率も向上します。また、あなたは別のインデントレベルに移動しないように 'actionsOnTap.forEach {$ 0(touch)}'を使うこともできます。 – Hamish
各タッチを各アクションと組み合わせるには、何らかのネストループが必要です。私は2つのリストの "製品"を作成するための組み込みのライブラリ関数はないと思うが、間違いかもしれない。あなたはその目的のためにユーティリティー機能を作ることができます。 http://stackoverflow.com/questions/30422312/swift-list-product –