post Image
【TIPS】今すぐ `.filter{…}.first` をやめましょう

よくこのような構文を見かけたりするのではないでしょうか:

let array: [String] = [
    "Apple",
    "Boy",
    "Cat"
]

let target = array.filter({ $0.hasPrefix("A") }).first
// target == "Apple"

ところがこの書き方、微妙にパフォーマンスが悪い(結果見つかったとしても最後まで回る)のと、微妙に意図が読み取りづらいですね。

Swift には first(where:) というものがありますので積極的にこちらを利用しましょう:

let target = array.first(where: { $0.hasPrefix("A") })
// target == "Apple"

この書き方だと、結果見つかったらループから抜けるのでパフォーマンスが少し良くなるだけでなく、一目で「配列の中の最初の A で始まる単語を返す」ってわかるのでとてもオススメです。

ちなみにインデックスを探すときも同じような書き方でできます:

let targetIndex = array.index(where: { $0.hasPrefix("A") })
// targetIndex == 0

『 Swift 』Article List