辞書の宣言
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 が返されます。次のレッスンでその部分について説明します。
チャレンジ
簡単3行の入力を読み取ります:名前、国、そして整数の年齢です。String型のキーと読み取った値を持つ、personという名前の単一の辞書を作成してください(年齢はInt型のままにします。不均一な値型が必要になります。ヒントを参照してください)。
以下の3行を出力してください:
- 辞書内のエントリ数
- サブスクリプト・アクセスを使用した
name=<value> - サブスクリプト・アクセスを使用した
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を出力する
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。