Menu
CoddyTech

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))                  // 10

Swift 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 pertama

Closure adalah nilai. Kamu bisa menyimpannya dalam variabel, mengembalikannya dari fungsi, dan meneruskannya sebagai argumen. Itulah alasan utama map berfungsi.

challenge icon

Tantangan

Mudah

Baca dua baris input:

  1. Bilangan bulat x
  2. Daftar bilangan bulat yang dipisahkan koma

Definisikan tiga closure, masing-masing (Int) -> Int:

  • addX menambahkan x ke argumennya
  • square mengembalikan kuadrat argumennya
  • negate mengembalikan 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,-3

Coba 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
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