Filter
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 24 dari 56.
filter menerima closure predikat dan mengembalikan array baru yang hanya berisi elemen-elemen yang closure-nya mengembalikan true.
let nums = [1, 2, 3, 4, 5, 6]
let evens = nums.filter { $0 % 2 == 0 }
print(evens) // [2, 4, 6]Hasilnya mempertahankan urutan asli. Tipe hasil sesuai dengan tipe input, tidak ada transformasi yang terjadi, hanya pemilihan.
filter dapat dirangkai dengan map secara alami:
let big = nums
.filter { $0 > 2 }
.map { $0 * $0 }
print(big) // [9, 16, 25, 36]Baca setiap rantai dari atas ke bawah, seperti pipeline. Setiap langkah menghasilkan array baru, tidak ada yang mengubah array asli.
Tantangan
MudahBaca dua baris input:
- list bilangan bulat yang dipisahkan koma
- Bilangan bulat
min
Cetak pada baris terpisah:
- Bilangan bulat yang lebih besar dari
min, digabungkan dengan,(atau kosong jika tidak ada yang memenuhi) - Kuadrat dari bilangan bulat yang memenuhi, digabungkan dengan
, - Jumlah bilangan bulat yang memenuhi
Gunakan filter + map secara berantai. Jangan lakukan iterasi dua kali pada input.
Untuk input 1,5,2,8,3,7 pada baris 1 dan 4 pada baris 2, output-nya adalah:
5,8,7
25,64,49
3Coba sendiri
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let min = Int(readLine()!)!
// TODO: filter nilai > min sekali, lalu map menjadi kuadrat; cetak keduanya, lalu hitung jumlahnya
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