Reduce
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 25 dari 56.
reduce menggabungkan seluruh array menjadi satu nilai. Dengan fungsi ini, kamu bisa menjumlahkan, mengalikan, mencari nilai ekstrem, atau membuat string atau array baru dari banyak elemen.
let total = [1, 2, 3, 4].reduce(0) { acc, n in acc + n }
print(total) // 10Argumen pertama adalah akumulator awal. Closure menerima akumulator yang terus diperbarui dan elemen berikutnya, lalu mengembalikan akumulator baru. Nilai akhir akumulator adalah hasilnya.
Untuk operator aritmetika, Swift menyediakan singkatan berbasis simbol:
[1, 2, 3, 4].reduce(0, +) // 10
[1, 2, 3, 4].reduce(1, *) // 24reduce tidak harus mengembalikan angka. Akumulator bisa bertipe apa pun, kamu yang menentukan:
let sentence = ["hi", "there"].reduce("") { $0 + $1 + "!" }
print(sentence) // "hi!there!"Tantangan
MudahBaca satu baris input: list bilangan bulat yang dipisahkan koma. Gunakan reduce untuk masing-masing, lalu cetak tiga baris:
- Jumlah
- Hasil kali
- Nilai maksimum (gunakan closure yang mengembalikan nilai yang lebih besar dari kedua argumen, jangan panggil
.max())
Anggap setidaknya ada satu elemen. Untuk nilai maksimum, kamu dapat menggunakan nums[0] sebagai akumulator awal dan melakukan reduce pada sisa array.
Untuk input 3,7,2,8,4, output-nya adalah:
24
1344
8Coba sendiri
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: hitung sum, product, dan max dengan reduce
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 KalenderLatihan sendiri: Playground Swift