Menu
CoddyTech

Membangun Pipeline

Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 31 dari 56.

Method yang sudah kamu pelajari, map, filter, reduce, compactMap, flatMap, sorted(by:), adalah perangkat Swift yang kamu gunakan sehari-hari. Kode nyata menggabungkan semuanya.

struct Order {
    let item: String
    let qty: Int
}
let orders = [Order(item: "apple", qty: 3), Order(item: "bread", qty: 0), Order(item: "milk", qty: 5)]
let names = orders
    .filter { $0.qty > 0 }
    .sorted { $0.qty > $1.qty }
    .map { $0.item }
print(names)                  // ["milk", "apple"]

Baca rantai dari atas ke bawah: pertahankan pesanan yang tidak kosong, urutkan berdasarkan kuantitas dari terbesar ke terkecil, lalu ambil namanya saja.

Pipeline akan lebih baik jika setiap langkah memiliki satu tujuan. Jika kamu melakukan dua hal sekaligus di dalam closure (memetakan dan memfilter), pisahkan menjadi dua langkah. Rangkaian ini tetap mudah dibaca saat bertambah panjang.

challenge icon

Tantangan

Sedang

Baca satu baris input: daftar entri name:price:qty yang dipisahkan dengan koma. Beberapa entri tidak valid dan harus dilewati: entri apa pun yang harga atau kuantitasnya bukan integer yang valid.

Buat pipeline yang menghasilkan satu baris untuk setiap entri valid dengan qty > 0, diurutkan berdasarkan total (price * qty) secara menurun, dengan format:

<name>: <total>

Setelah baris per item, cetak satu baris ringkasan: Sum: <n> dengan total keseluruhan.

Untuk input apple:3:2,bread:bad:1,milk:4:5,cheese:8:0,salt:2:7, output-nya adalah:

milk: 20
salt: 14
apple: 6
Sum: 40

Coba sendiri

let entries = readLine()!.components(separatedBy: ",")

// TODO: buat pipeline dengan compactMap (parse), filter (qty > 0),
// sorted (total desc), map (format); cetak lines + Sum
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Playground Swift