Array
An ordered, random-access collectionhttps://developer.apple.com/documentation/swift/array
特徴
- 配列の要素は順序立てられている
- 配列の要素は重複可能
- 配列の要素は複数の型を保持可能
コードサンプル
上記特徴を踏まえ、どのような挙動となるのか見ていきますlet numbers = [2, 5, 3, 5]
print(numbers)
print(type(of: numbers))
numbers.forEach { print($0) }
// 実行結果
[2, 5, 3, 5]
Array<Int>
2
5
3
5
let numbers: [Any] = [2, "test", 0.5]
print(numbers)
print(type(of: numbers))
numbers.forEach { print($0) }
// 実行結果
[2, "test", 0.5]
Array<Any>
2
test
0.5
Set
An unordered collection of unique elements.https://developer.apple.com/documentation/swift/set
特徴
- 配列の要素は順序立てられていない
- 配列の要素はユニーク
- 配列の要素は複数の型を保持できない
コードサンプル
上記特徴を踏まえ、どのような挙動となるのか見ていきますlet numbers: Set = [2, 3, 4, 3]
print(numbers)
print(type(of: numbers))
numbers.forEach { print($0) }
// 実行結果
[4, 3, 2]
Set<Int>
4
3
2
また、3が重複していますが、runtime errorにはならず、ユニーク性を担保していることがわかります。
forEachで取り出す際には、初期化時の順序とは異なりランダムに取り出されています。
let numbers: Set = [2, "test"] // compile error
print(numbers)
print(type(of: numbers))
numbers.forEach { print($0) }
上記では、Intが先に追加されているにも関わらずStringを追加しようとしているため、
Cannot convert value of type 'String' to expected element type 'Int'
というエラーメッセージが表示されます
まとめ
ArrayとSetの違いについて簡単にまとめていきました。要件に応じてどちらを利用するのか、また利用すべきか検討するとよりSwiftyなコードとなると思うので、違いについて把握しておくと良いと思います