Last Updated on August 15, 2022 by
Swift extensions adalah cara menambahkan fungsi baru pada kelas, struktur ataupun tipe enumerasi yang sudah ada di Swift. Berikut ini adalah cara-cara pemrograman extension dalam Swift yang bisa Anda contoh.
Table of Contents
Apa Itu Swift Extension?
Menambahkan tipe fungsi baru dapat dilakukan dengan extension dalam Swift. Akan tetapi, Anda tetap tidak bisa mengganti fungsi tersebut secara total. Anda hanya bisa menambahkannya saja sesuai kebutuhan.
6 fungsi utama dari Swift Extensions adalah:
- Menambahkan properti komputasi beserta properti tipe komputasi.
- Mendefinisikan metode type dan instance di Swift.
- Menyediakan proses inisialisasi baru.
- Mendefinisikan subskrip.
- Mendefinisikan dan menggunakan tipe baru nest.
- Menyesuaikan agar tipe fungsi yang ada sudah sesuai protokol.
Setiap extension dalam Swift selalu dideklarasikan dengan kata kunci ‘extension’.
Sintaksis Swift Extensions
Adapun bentuk sintaksis dari Swift Extensions adalah sebagai berikut:
extension SomeType { // tambahkan fungsi baru di sini }
Tipe fungsi yang sudah ada juga dapat ditambahkan dengan Swift Extension untuk menjadikannya sebuah sistem protokol standar. Bentuk sintaksnya masih serupa dengan pemrograman kelas atau struktur di Swift:
extension SomeType: SomeProtocol, AnotherProtocol { // persyaratan protokol dijelaskan di sini }
Swift Extension : Properti Komputasi
Dua jenis properti komputasi ‘instance’ dan ‘type’ dapat diperluas fungsinya memakai Swift extention. Berikut contohnya:
extension Int { var tambah: Int {return self + 9 } var kurang: Int { return self - 9 } var kali: Int { return self * 9 } var bagi: Int { return self / 9 } } let penambahan = 5.tambah print("Hasil 1 = \(penambahan)") let pengurangan = 10.kurang print("Hasil 2 = \(pengurangan)") let perkalian = 5.kali print("Hasil 3 = \(perkalian)") let pembagian = 18.bagi print("Hasil 4 = \(pembagian)") let hitung = 10.tambah + 5.kali print("Hasil 5 = \(hitung)")
Anda akan mendapat hasil berikut setelah menjalankan kode di atas:
Hasil 1 = 14 Hasil 2 = 1 Hasil 3 = 45 Hasil 4 = 2 Hasil 5 = 64
Swift Extensions : Menambahkan Initializers Baru
Swift 4 menyediakan keleluasaan bagi programmer untuk menambahkan penginisasi (intializers) baru ke tipe fungsi yang sudah ada. Hal ini dapat dilakukan memakai extension dalam Swift.
Anda dapat menambahkan tipe fungsi kustom buatan sendiri untuk memperluas fungsi kode saat ini, begitu juga memasukkan opsi inisiasi tambahan.
Namun perlu diingat bahwa Swift Extention hanya mendukung kode init() saja, dan tidak mencakup deinit().
Contoh pemrograman extension di Swift dengan initializer baru:
struct sum { var num1 = 2, num2 = 4 } struct diff { var no1 = 4, no2 = 2 } struct mult { var a = sum() var b = diff() } let calc = mult() print ("Nilai pada mult sum: \(calc.a.num1, calc.a.num2)") print("Nilai pada mult diff: \(calc.b.no1, calc.b.no2)") let memcalc = mult(a: sum(num1: 12, num2: 18),b: diff(no1: 18, no2: 12)) print("Nilai pada mult sum sekarang: \(memcalc.a.num1, memcalc.a.num2)") print("Nilai pada mult diff sekarang: \(memcalc.b.no1, memcalc.b.no2)") extension mult { init(x: sum, y: diff) { let X = x.num1 + x.num2 let Y = y.no1 + y.no2 } } let a = sum(num1: 2, num2: 4) print("Nilai pada sum: \( a.num1, a.num2)") let b = diff(no1: 4, no2: 2) print("Nilai pada diff: \(b.no1, b.no2)")
Output dari kode di atas adalah:
Nilai pada mult sum: (2, 4) Nilai pada mult diff: (4, 2) Nilai pada mult sum sekarang: (12, 18) Nilai pada mult diff sekarang: (18, 12) Nilai pada sum:(2, 4) Nilai pada diff: (4, 2)
Swift Extension : Menambah Metode ‘Instance’ & ‘Type’
Metode (method) instance dan type juga dapat disematkan pada subclass memakai extension dalam Swift. Berikut contohnya:
extension Int { func topics(summation: () -> ()) { for _ in 0..<self { summation() } } } 2.topics(summation: { print("Extensi block") }) 4.topics(summation: { print("Tipe casting blok") })
Kode di atas akan menghasilkan output sebagai berikut di Playground:
Extensi block Extensi block Tipe casting blok Tipe casting blok Tipe casting blok Tipe casting blok
Fungsi topics() mengambil tipe argumen ‘(summation: () → ())’ untuk menunjukkan bahwa fungsi tidak mengambil argumen apa pun, dan tidak akan mengembalikan nilai apa pun.
Untuk memanggil fungsi ini beberapa kali dalam struktur kode Anda, lakukan inisialisasi ‘for block’ diikuti oleh metode dengan topic().
Swift Extensions : Memutasi Metode Instance
Metode instance juga dapat dimutasikan saat dideklarasikan sebagai ekstensi.
Metode struktur dan enumerasi yang memodifikasi diri sendiri atau propertinya harus menandai metode instance sebagai ‘mutasi’; seperti halnya metode lain yang bermutasi dari implementasi aslinya.
Contoh kodingnya adalah sebagai berikut:
extension Double { mutating func circle() { let pi = 3.1415 self = pi * self * self } } var Trial1 = 3 Trial1.circle() print("Hasil = \(Trial1)") var Trial2 = 6 Trial2.circle() print("Hasil = \(Trial2)") var Trial3 = 9 Trial3.circle() print("Hasil = \(Trial3)")
Dengan hasil keluarannya adalah sebagai berikut:
Area of circle is: 28.2735 Area of circle is: 113.094 Area of circle is: 254.4615
Swift Extension : Menambahkan Subscripts
Extension dalam Swift juga bermanfaat untuk memasukkan subskrip (subscripts) baru pada struktur kode yang sudah dideklarasikan. Contoh kodenya adalah:
extension Int { subscript(var multtable: Int) -> Int { var no1 = 1 while multtable > 0 { no1 *= 10 --multtable } return (self / no1) % 10 } } print(12[0]) print(7869[1]) print(786543[2])
Ketika program di atas dijalankan memakai Playground, maka hasilnya adalah:
2 6 5
Swift Extensions: Memperluas Nested Swift (Class, Structure, Enumeration)
Terakhir, Anda bisa memperluas tipe nested Swift untuk berbagai class, structure dan enumeration dengan extension seperti pada contoh ini:
extension Int { enum calc { case add case sub case mult case div case anything } var print: calc { switch self { case 0: return .add case 1: return .sub case 2: return .mult case 3: return .div default: return .anything } } } func result(numb: [Int]) { for i in numb { switch i.print { case .add: print(" 5 ") case .sub: print(" 10 ") case .mult: print(" 15 ") case .div: print(" 20 ") default: print(" 25 ") } } } result(numb: [0, 1, 2, 3, 4, 7])
Lalu hasil akhir saat kode di atas dijalankan adalah:
5 10 15 20 25 25
Demikianlah pembahasan cara-cara pengaplikasian extension dalam Swift beserta contoh kodingnya. Semoga ulasan di atas bermanfaat menambah pengetahuan programming Anda, ya.
Yuk ikuti terus CODEKEY untuk mendapat lebih banyak ilmu dan contoh pemrograman dari nol sampai mahir! Pelajari berbagai contoh koding dari aneka bahasa pemrograman secara gratis hanya di https://codekey.id/. Sampai bertemu lagi!
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.