🕊

[Swift] Array の contains の挙動の整理

2021/12/25に公開

はじめに

よく Array の contains の挙動について忘れるので、まとめてみました。

基本的な挙動

// (基本形の挙動)クロージャーの返りがひとつでもtrueが含まれればtrueを返却する
print([0,1].contains { _ in true }) // ture
print([2,3].contains { _ in false }) // false

// (備考)空配列の場合はクロージャーを1周も通過しないため必ずfalseを返す(はず)
print([].contains { _ in true }) // false
print([].contains { _ in false }) // false

以下、 0を含むか? のいろいろな書き方 (全部同じ意味のはず)

// (1) 一番長いタイプ
print([0,1].contains(where: { num in num == 0 })) // true
print([2,3].contains(where: { num in num == 0 })) // false

// (2) 引数を省略
print([0,1].contains(where: { $0 == 0 })) // true
print([2,3].contains(where: { $0 == 0 })) // false

// (3) whereを省略
print([0,1].contains { num in num == 0 }) // true
print([2,3].contains { num in num == 0 }) // false

// (4) whereを省略かつ引数を省略 ← 迷ったらこれにしてます
print([0,1].contains { $0 == 0 }) // true
print([2,3].contains { $0 == 0 }) // false

// (5) クロージャーを省略
print([0,1].contains(0)) // true
print([2,3].contains(0)) // false

さいごに

contains は結構便利!!

GitHubで編集を提案

Discussion