Closure dalam Swift


Disini Kamu akan mempelajari apa yang membuat closure berbeda dari fungsi biasa dalam swift. Kita mulai dengan “Apa itu Closure?”

Closure adalah blok fungsi yang bisa Kamu masukkan di kode Kamu. Kamu bisa memasukkan closure sebagai argumen suatu fungsi atau Kamu bisa menyimpannya sebagai properti suatu objek.

Bisa dikatakan juga Closure adalah fungsi tanpa nama dan key func (sampai saat ini).

Coding time… Silahkan buka Playground Kamu.

Fungsi

Sebelum masuk ke closure, kita mulai dengan fungsi dahulu. Silahkan buat fungsi penjumlahan.

Swift

Closure

Buat closure yang fungsinya sama/identik dengan contoh fungsi di atas. Blok Closure diawali dan diakhiri dengan { dan }.

Swift

Tipe dari addClosures adalah (Int, Int) -> Int dan itu identik dengan addition dari contoh pertama. number1 dan number2 adalah parameter. Apa pun yang muncul setelah keyword in adalah blok return.

Penulisan Singkat

Dalam penulisannya closure juga bisa tanpa return seletelah in jika closure hanya mengembalikan nilai.

Swift

AddClosuresTwo memerlukan return karena ada tambahan baris kodeprint("Hello"). Selain itu, Kamu dapat skip return. Lalu kamu harus menambahkan tipe yang dikembalikan secara eksplisit ( -> Int).

Kita ingin membuat lebih singkat, tentu saja bisa mari kita buat menjadi 1 baris.

Swift

Pada contoh di atas, $0 dan $1 merujuk pada parameter pertama dan kedua. Swift bisa mengetahui 4 sebagai $0 dan 5, $1 dari addClosuresFour (4, 5).

Bisakah Kamu mengembalikan 1 atau lebih fungsi ke sebuah fungsi?

Mulai dari sini mungkin akan lebih membingungkan, tetap fokus. Kamu akan belajar cara membuat fungsi khusus. Jadi tidak hanya menggunakan closure sebagai parameter dan tapi juga sebagai return.

Return Closure

Terdapat 2 cara untuk membuat closure sebagai return, tapi sebelum itu kita buat terlebih dahulu sebuah closure yang akan kita return

Swift

Return Closure secara tidak langsung

Buat fungsi yang tipe return nya adalah (Int, Int) -> Int.

Swift

Kamu telah mengembalikan addWithClosures yang tipenya adalah (Int, Int) -> Int.

Return Closure secara langsung

Kamu dapat mengembalikan closure secara langsung, sebagai ganti dari addWithClosures.

Swift

Atau jika Kamu ingin lebih singkat

Swift

Passing Closure

Buat fungsi yang parameternya menerima () -> String. Kemudian, jalankan blok closure dalam fungsi.

Swift

Buat closure yang akan diteruskan dalam fungsi insertClosureBlock.

Swift

Passing Closure secara tidak langsung

Swift

Passing Closure secara langsung

Swift

Ingat bahwa tiap fungsi adalah closure. Dengan kata lain, aturan yang sama berlaku untuk closure yang tanpa nama.

Ada tiga jenis closure:

  • fungsi global
  • fungsi nested
  • ekspresi closure

Closure merupakan konsep penting dan Kamu akan sering gunakan di Swift. Closure memungkinkan Kamu menulis kode yang fleksibel dan dinamis yang proses penulisannya mudah sekaligus mudah dipahami.

Semoga bermanfaat.

0 0 votes
Rating
Subscribe
Notify of
guest


0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

0
Would love your thoughts, please comment.x
()
x