Pencarian Opsional
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 13 dari 56.
Subskrip dictionary selalu menghasilkan Optional: nilai ketika key ada, nil ketika key tidak ada. Swift mengharuskan kamu menangani kedua kasus.
let prices: [String: Int] = ["apple": 1, "bread": 3]
let p = prices["apple"]
print(p) // Optional(1)Tiga cara idiomatis untuk menangani nilai opsional. Pilih cara yang sesuai dengan situasinya.
1. if let: tangani kedua cabang secara eksplisit:
if let p = prices["apple"] {
print("apple costs \(p)")
} else {
print("unknown")
}2. penggabungan nil ??: sediakan nilai cadangan secara langsung:
let p = prices["olive"] ?? 0 // 03. subskrip dengan nilai default: hasilnya sama, tetapi nilai default juga tetap ada jika kamu menulis kembali ke key tersebut:
var counts = ["a": 2]
counts["b", default: 0] += 1 // counts == ["a": 2, "b": 1]Tantangan
MudahDiberikan dictionary prices. Baca satu baris input: daftar item yang dipisahkan koma dan ingin dibeli pengguna.
Untuk setiap item, sesuai urutan input, cari item tersebut di prices. Cetak satu baris untuk setiap item:
<item> @ <price>jika item ada di dictionary<item> not soldjika tidak
Setelah mencantumkan semua item, cetak satu baris terakhir: Total: <sum>. Anggap item yang tidak ada berharga 0 dengan menggunakan operator nil-coalescing.
Untuk input apple,bread,olive,milk, output-nya adalah:
apple @ 1
bread @ 3
olive not sold
milk @ 4
Total: 8Coba sendiri
let prices: [String: Int] = ["apple": 1, "bread": 3, "milk": 4]
let items = readLine()!.components(separatedBy: ",")
// TODO: cari harga tiap item; cetak '@ price' atau 'not sold'; jumlahkan dengan ?? 0
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Mendalami string
Jumlah dan indeksHuruf besar, huruf kecil, dan hapus spasiMencari dalam stringMemisahkan dan menggabungkanMengganti substringUlasan: Memeriksa nama pengguna4set
Membuat setGabungan dan IrisanSelisih dan Selisih SimetrisHimpunan Bagian dan Himpunan SupersetRingkasan: Filter Tag7Proyek: Pelacak Kebiasaan
Gambaran Umum ProyekTandai Selesai2Rentang dan Langkah
Rentang Tertutup vs Setengah TerbukaLangkahMetode RentangRentang dalam SwitchRangkuman: Kisi Kalender3dictionary
Mendeklarasikan dictionaryPencarian OpsionalMemperbarui dictionaryMenelusuri dictionaryMengelompokkan NilaiRangkuman: Inventaris6Fungsi Orde Tinggi Bagian 2
compactMapflatMapsorted(by:)Membangun PipelineRingkasan: Papan PeringkatLatihan sendiri: Playground Swift