Dasar Closure
Termasuk bagian Logika dan Alur dalam perjalanan Swift di Coddy. Pelajaran 38 dari 56.
Closure adalah blok kode mandiri yang dapat kamu teruskan dan panggil nanti. Sintaks lengkapnya mencantumkan tipe parameter dan nilai kembalian:
let double = { (n: Int) -> Int in
return n * 2
}
print(double(5)) // 10Swift dapat menyimpulkan tipe saat konteksnya jelas, jadi kamu jarang menulis bentuk panjang. Di dalam map, filter, dan sebagainya, bentuk singkat adalah yang umum:
let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 } // paling singkat, $0 adalah argumen pertamaClosure adalah nilai. Kamu bisa menyimpannya dalam variabel, mengembalikannya dari fungsi, dan meneruskannya sebagai argumen. Itulah alasan utama map berfungsi.
Tantangan
MudahBaca dua baris input:
- Bilangan bulat
x - Daftar bilangan bulat yang dipisahkan koma
Definisikan tiga closure, masing-masing (Int) -> Int:
addXmenambahkanxke argumennyasquaremengembalikan kuadrat argumennyanegatemengembalikan argumen dengan tanda terbalik
Terapkan setiap closure ke setiap elemen dalam daftar menggunakan map. Cetak tiga baris, satu untuk setiap closure, dengan hasil yang digabungkan menggunakan ,:
addX: ...
square: ...
negate: ...Untuk input 10 pada baris 1 dan 1,2,3 pada baris 2, outputnya adalah:
addX: 11,12,13
square: 1,4,9
negate: -1,-2,-3Coba sendiri
let x = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: definisikan tiga closure (Int) -> Int dan terapkan map pada nums dengan masing-masing closure
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