Menu
Coddy logo textTech

辞書の宣言

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

辞書(dictionary)は、キーと値のペアの順序付けられていないコレクションです。作成時に、キーの型と値の型の両方が固定されます。

var prices: [String: Int] = [
    "apple": 1,
    "bread": 3,
    "milk":  4
]
print(prices.count)            // 3
print(prices.isEmpty)          // false

型注釈 [String: Int] は、「キーは String、値は Int」と読みます。Swiftは通常、リテラルからこれを推論できますが、明示的に記述することで、空の初期化子が曖昧でなくなります:

var counts: [String: Int] = [:]
// 空の配列との比較。そちらも型が必要になります

存在するキーを読み取ると、その値が返されます。存在しないキーを読み取ると nil が返されます。次のレッスンでその部分について説明します。

challenge icon

チャレンジ

簡単

3行の入力を読み取ります:名前、国、そして整数の年齢です。String型のキーと読み取った値を持つ、personという名前の単一の辞書を作成してください(年齢はInt型のままにします。不均一な値型が必要になります。ヒントを参照してください)。

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

  1. 辞書内のエントリ数
  2. サブスクリプト・アクセスを使用したname=<value>
  3. サブスクリプト・アクセスを使用したcountry=<value>

表示可能な形式を使用してください:辞書から値をAnyとして読み取る際、出力する前に強制アンラップ(force-unwrap)を行ってください。

入力がAlice / UK / 30の場合、出力は以下のようになります:

3
name=Alice
country=UK

チートシート

辞書は、固定されたキーと値の型を持つキー/値のペアを格納します:

var prices: [String: Int] = [
    "apple": 1,
    "bread": 3,
    "milk":  4
]
print(prices.count)   // 3
print(prices.isEmpty) // false

明示的な型注釈を使用して空の辞書を作成します:

var counts: [String: Int] = [:]

異なる値の型(混合型)には [String: Any] を使用します:

var person: [String: Any] = [
    "name": "Alice",
    "age": 30
]

自分で試してみよう

let name = readLine()!
let country = readLine()!
let age = Int(readLine()!)!

// TODO: personという名前の[String: Any]を作成し、count、name、countryを出力する
quiz icon腕試し

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

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