Belajar Swift : Cara Menggunakan Kelas Ekstensi di Swift
Fungsionalitas kelas yang ada, struktur atau jenis pencacahan dapat ditambahkan dengan bantuan ekstensi. Fungsionalitas jenis dapat ditambahkan dengan ekstensi tetapi fungsi tersebut tidak dapat diganti dengan ekstensi.
Fungsi Ekstensi Cepat -
- Menambahkan properti yang dihitung dan properti tipe yang dihitung
- Mendefinisikan contoh dan metode tipe.
- Menyediakan penginisialisasi baru.
- Mendefinisikan langganan
- Mendefinisikan dan menggunakan tipe bertingkat baru
- Membuat tipe yang ada sesuai dengan protokol
Ekstensi dinyatakan dengan kata kunci 'ekstensi'
Sintaksis
extension SomeType { // new functionality can be added here }
Tipe yang ada juga dapat ditambahkan dengan ekstensi untuk menjadikannya sebagai standar protokol dan sintaksnya mirip dengan kelas atau struktur.
extension SomeType: SomeProtocol, AnotherProtocol { // protocol requirements is described here }
Properti Terhitung
Properti 'instance' dan 'type' yang dihitung juga dapat diperluas dengan bantuan ekstensi.
extension Int { var add: Int {return self + 100 } var sub: Int { return self - 10 } var mul: Int { return self * 10 } var div: Int { return self / 5 } } let addition = 3.add print("Addition is \(addition)") let subtraction = 120.sub print("Subtraction is \(subtraction)") let multiplication = 39.mul print("Multiplication is \(multiplication)") let division = 55.div print("Division is \(division)") let mix = 30.add + 34.sub print("Mixed Type is \(mix)")
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
Addition is 103 Subtraction is 110 Multiplication is 390 Division is 11 Mixed Type is 154
Penginisialisasi
Swift 4 memberikan fleksibilitas untuk menambahkan penginisialisasi baru ke jenis yang sudah ada dengan ekstensi. Pengguna dapat menambahkan tipe kustom mereka sendiri untuk memperluas tipe yang sudah ditentukan dan opsi inisialisasi tambahan juga dimungkinkan. Ekstensi hanya mendukung init (). deinit () tidak didukung oleh ekstensi.
struct sum { var num1 = 100, num2 = 200 } struct diff { var no1 = 200, no2 = 100 } struct mult { var a = sum() var b = diff() } let calc = mult() print ("Inside mult block \(calc.a.num1, calc.a.num2)") print("Inside mult block \(calc.b.no1, calc.b.no2)") let memcalc = mult(a: sum(num1: 300, num2: 500),b: diff(no1: 300, no2: 100)) print("Inside mult block \(memcalc.a.num1, memcalc.a.num2)") print("Inside mult block \(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: 100, num2: 200) print("Inside Sum Block:\( a.num1, a.num2)") let b = diff(no1: 200, no2: 100) print("Inside Diff Block: \(b.no1, b.no2)")
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
Inside mult block (100, 200) Inside mult block (200, 100) Inside mult block (300, 500) Inside mult block (300, 100) Inside Sum Block:(100, 200) Inside Diff Block: (200, 100)
Metode
Metode instance baru dan metode tipe dapat ditambahkan lebih jauh ke subclass dengan bantuan ekstensi.
extension Int { func topics(summation: () -> ()) { for _ in 0..<self { summation() } } } 4.topics(summation: { print("Inside Extensions Block") }) 3.topics(summation: { print("Inside Type Casting Block") })
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
Inside Extensions Block Inside Extensions Block Inside Extensions Block Inside Extensions Block Inside Type Casting Block Inside Type Casting Block Inside Type Casting Block
topik () fungsi mengambil argumen tipe '(penjumlahan: () → ())' untuk menunjukkan fungsi tidak mengambil argumen apa pun dan tidak akan mengembalikan nilai apa pun. Untuk memanggil fungsi itu beberapa kali, untuk blok diinisialisasi dan panggilan ke metode dengan topic () diinisialisasi.
Metode Mutasi Instans
Metode instance juga dapat dimutasi ketika dideklarasikan sebagai ekstensi.
Struktur dan metode enumerasi yang mengubah diri atau propertinya harus menandai metode instance sebagai mutasi, seperti metode mutasi dari implementasi asli.
extension Double { mutating func square() { let pi = 3.1415 self = pi * self * self } } var Trial1 = 3.3 Trial1.square() print("Area of circle is: \(Trial1)") var Trial2 = 5.8 Trial2.square() print("Area of circle is: \(Trial2)") var Trial3 = 120.3 Trial3.square() print("Area of circle is: \(Trial3)")
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
Area of circle is: 34.210935 Area of circle is: 105.68006 Area of circle is: 45464.070735
Berlangganan
Menambahkan langganan baru ke instance yang sudah dideklarasikan juga dapat dilakukan dengan ekstensi.
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 kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
2 6 5
Jenis Bersarang
Jenis bersarang untuk kelas, struktur dan contoh enumerasi juga dapat diperluas dengan bantuan ekstensi.
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(" 10 ") case .sub: print(" 20 ") case .mult: print(" 30 ") case .div: print(" 40 ") default: print(" 50 ") } } } result(numb: [0, 1, 2, 3, 4, 7])
Ketika kami menjalankan program di atas menggunakan playground, kami mendapatkan hasil sebagai berikut -
10 20 30 40 50 50
Post a Comment for "Belajar Swift : Cara Menggunakan Kelas Ekstensi di Swift"