Rangkuman: Catatan Suhu
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 16 dari 57.
Tantangan
SulitBuat log suhu sederhana. Lengkapi enum Scale (celsius, fahrenheit, dengan nilai mentah C dan F) dan struct Reading, yang menyimpan suhu dalam celsius. Reading memiliki factory statis parse(_:) yang membaca teks seperti 20C atau 68F (mengembalikan nil untuk teks lainnya), property komputasi fahrenheit, dan label komputasi yang mengembalikan 20.0C / 68.0F. Class TemperatureLog menyimpan array bacaan dan property highest dengan observer didSet yang mencatat setiap rekor baru sebagai new high 25.0C.
Kode yang disediakan menambahkan setiap bacaan yang berhasil diurai ke log (atau mencetak bad reading: x), mencetak label setiap bacaan, lalu mencetak catatan yang dikumpulkan observer, satu per baris.
Kodemu ditulis di Scale.swift, Reading.swift, dan TemperatureLog.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.
Coba sendiri
// Kode input/output yang disediakan: biarkan apa adanya
var input: [String] = []
while let line = readLine() { input.append(line) }
let log = TemperatureLog()
for line in input {
if let r = Reading.parse(line) {
log.add(r)
print(r.label)
} else {
print("bad reading: \(line)")
}
}
for record in log.records { print(record) }
Semua pelajaran di Pemrograman Berorientasi Objek
1Class dan Object
Bekerja dengan FileMendefinisikan ClassMethod dan selfInitializerClass adalah ReferensiUlasan: Kartu Perpustakaan4Enkapsulasi
Kontrol AksesHanya Bisa Dibaca dari LuarMelindungi StateInitializer yang Bisa GagalRangkuman: Rekening Bank7Polimorfisme dan Generik
PolimorfismeKonversi TipeFungsi GenerikTipe GenerikRangkuman: Kalkulator Bentuk2Struct dan Tipe Nilai
StructSemantik NilaiMethod yang Mengubah NilaiStruct atau classRangkuman, Item Inventaris11Proyek: Manajemen Perpustakaan
Buku dan AnggotaPeminjaman Buku3Properti Lebih Dalam
Properti TerhitungPengamat PropertiAnggota StatisEnum dengan MethodRangkuman: Catatan SuhuLatihan sendiri: Playground Swift