Swift Academy · レッスン

Dictionaryのデフォルトサブスクリプト

組み込みのデフォルト値を使ってDictionaryの値を読み取ります。

レッスン 4/413 ステップ

「Dictionaryのデフォルトサブスクリプト」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

辞書検索の結果はオプショナルです

dict[key]でキーを検索すると、キーが存在しない可能性があるため、オプショナルが返されます。このオプショナルには対処が必要です。

let ages = ["Ann": 30]
let bob = ages["Bob"]
print(bob as Any)

デフォルト付きサブスクリプト

Swiftにはデフォルト値を指定できるサブスクリプトがあります。dict[key, default: value]と記述すると、キーが存在しない場合にnilではなくデフォルト値が得られます。

let ages = ["Ann": 30]
print(ages["Bob", default: 0])
print(ages["Ann", default: 0])

結果は非オプショナルです

通常の検索とは異なり、デフォルト付きサブスクリプトは非オプショナルの値を返すため、アンラップせずにすぐ使えます。

let stock = ["pen": 5]
let pens: Int = stock["pen", default: 0]
print(pens + 1)

デフォルト値を使ったカウント

デフォルト付きサブスクリプトは、出現回数のカウントに特に便利です。各キーを0から始め、順に加算していきます。

var counts: [String: Int] = [:]
let words = ["a", "b", "a", "a", "b"]
for word in words {
    counts[word, default: 0] += 1
}
print(counts["a", default: 0])
print(counts["b", default: 0])

+=が機能する理由

dict[key, default: 0]は新しいキーに対しても実際の値を返すため、+=で安全にその場で変更できます。

var tally: [String: Int] = [:]
tally["x", default: 0] += 5
tally["x", default: 0] += 3
print(tally["x", default: 0])

合計のグループ化

デフォルト付きサブスクリプトを使うと、1回の走査でカテゴリごとの合計を蓄積できます。

let sales = [("apple", 3), ("pear", 2), ("apple", 4)]
var totals: [String: Int] = [:]
for (item, amount) in sales {
    totals[item, default: 0] += amount
}
print(totals["apple", default: 0])

デフォルト値とnil合体の比較

読み取りに関しては、dict[key, default: 0]はdict[key] ?? 0と同等です。ただし、サブスクリプト形式なら値をその場で変更することもできます。

let prices = ["tea": 3]
print(prices["tea"] ?? 0)
print(prices["tea", default: 0])

配列値への追加

デフォルト付きサブスクリプトは配列の値にも使えるため、グループ化されたリストを作成できます。

var groups: [String: [Int]] = [:]
groups["even", default: []].append(2)
groups["even", default: []].append(4)
print(groups["even", default: []])

デフォルト値を読んでも挿入されません

デフォルト値を使って読み取っても、キーは辞書に追加されません。+=のように値を変更した場合にのみ、キーが保存されます。

var data: [String: Int] = [:]
_ = data["ghost", default: 0]
print(data.count)
data["real", default: 0] += 1
print(data.count)

適切なデフォルト値を選ぶ

値の型と操作に合ったデフォルト値を選びます。合計には0、リストには[]、テキストには空文字列を使います。

var notes: [String: String] = [:]
notes["greeting", default: ""] += "Hello"
notes["greeting", default: ""] += " World"
print(notes["greeting", default: ""])

カウントと読み取りの組み合わせ

出現頻度マップを作成し、同じデフォルト値を使って読み取ることで、全体を通して非オプショナルのまま扱えます。

var freq: [Character: Int] = [:]
for ch in "banana" {
    freq[ch, default: 0] += 1
}
print(freq["a", default: 0])
print(freq["z", default: 0])

クイックチェック

デフォルト付きサブスクリプトをテストします。

まとめ:辞書のデフォルト付きサブスクリプト

dict[key, default: value]を使うと、非オプショナルの代替値を読み取ったり、値をその場で変更したりできます。手動でnilを確認せずに、カウント、合計、グループ化を行うのに適しています。

var c: [String: Int] = [:]
for x in ["a", "a", "b"] { c[x, default: 0] += 1 }
print(c["a", default: 0])
無料で開始

AI チューターと学ぶ Swift — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
122
レッスン
409

よくある質問

「Dictionaryのデフォルトサブスクリプト」レッスンは無料ですか?

はい。「Dictionaryのデフォルトサブスクリプト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「Dictionaryのデフォルトサブスクリプト」で何を学びますか?

組み込みのデフォルト値を使ってDictionaryの値を読み取ります。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Dictionaryのデフォルトサブスクリプト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. nil合体演算子
  2. デフォルト値の連鎖
  3. 関数パラメータのデフォルト値
  4. Dictionaryのデフォルトサブスクリプト
← Swift Academyに戻る