Rangkuman: Kalkulator Aman
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 48 dari 56.
Tantangan
SedangBuat kalkulator sederhana yang aman terhadap input yang tidak valid.
Definisikan CalcError: Error dengan kasus: parse, divideByZero, unknownOp.
Definisikan fungsi yang melempar error, compute(_ a: String, _ op: String, _ b: String) throws -> Int, yang:
- Mem-parsing
adanbsebagai bilangan bulat, dan melempar.parsejika salah satunya gagal - Melempar
.unknownOpjikaopbukan salah satu dari+,-,*,/ - Melempar
.divideByZerojikaop == "/"danb == 0 - Jika tidak, mengembalikan hasil berupa bilangan bulat
Baca satu baris input: list ekspresi a:op:b yang dipisahkan koma. Proses setiap ekspresi secara berurutan dengan do/catch. Cetak satu baris untuk setiap ekspresi:
= <n>jika berhasilparse error,div by zero, atauunknown opuntuk setiap kasus error
Setelah baris untuk setiap ekspresi, cetak satu baris ringkasan: OK: <n> dengan jumlah ekspresi yang berhasil.
Untuk input 3:+:5,10:/:0,7:*:abc,9:%:2,12:-:4, output-nya adalah:
= 8
div by zero
parse error
unknown op
= 8
OK: 2Coba sendiri
let exprs = readLine()!.components(separatedBy: ",")
// TODO: buat enum CalcError; buat func compute(...) throws -> Int;
// lakukan perulangan, gunakan do/try, print hasil untuk setiap expr; terakhir print 'OK: <n>'
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 Peringkat9Penanganan Error
throws dan Errordo, try, catchtry? dan try!Meneruskan ErrorRangkuman: Kalkulator AmanLatihan sendiri: Playground Swift