Menu
Coddy logo textTech

集合の作成

CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部。レッスン 18/56。

Set は一意な値の順序のないコレクションです。すべての要素で同じ型を持ち、重複は許可されず、予測可能な反復順序はありません。

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count)              // 3(重複した "red" は破棄されます)

リテラル形式では型注釈 Set<String> が必須です。なぜなら、単独の ["a", "b"]Array として推論されてしまうためです。

3つの核心的な操作:containsinsertremove。後者の2つは、変更が意味のあるもの(実際に行われたか)だったかどうかに関する情報を返します。

colors.insert("yellow")         // 追加する
colors.insert("red")            // 既にあるので効果なし
colors.contains("green")        // true
colors.remove("blue")           // 「blue」を返すか、存在しない場合は nil

配列からセットを構築することで、ワンステップで重複を削除できます:

let unique = Set([1, 2, 2, 3, 3, 3])
// 3つの要素、正確な順序は保証されない
challenge icon

チャレンジ

初心者

1行の入力(カンマ区切りの単語のリスト、重複が含まれている可能性あり)を読み込みます。

次の3行を出力してください:

  1. uniqueな単語の数(Setを使用)
  2. アルファベット順にソートされ、, で結合された unique な単語
  3. 入力に swift という単語が含まれている場合は true、そうでない場合は falsecontains を使用)

入力が swift,ruby,go,swift,go,rust の場合、出力は次のようになります:

4
go,ruby,rust,swift
true

自分で試してみよう

let words = readLine()!.components(separatedBy: ",")

// TODO: Set経由で重複排除、件数を出力、ソートして結合、指示の正確なテキストを含む
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド