Cara menggunakan type casting in php

Swift Type Casting digunakan untuk memvalidasi tipe instance “Type Casting” dalam bahasa pemrograman Swift 4. Fungsi ini akan memeriksa apakah sebuah tipe instance merupakan bagian dari super class, subclass, atau memiliki kedudukan tersendiri.

Swift Type Casting 4 memiliki dua operator, yakni ‘is’ untuk memeriksa tipe nilai; dan ‘as’ untuk mentransmisikan nilai tipe tersebut ke tipe yang berbeda.

Type Casting Swift juga bisa mengecek apakah sebuah instance mengikuti standar kesesuaian protokol tertentu atau tidak.

Untuk lebih lengkapnya, kali ini kita akan belajar Swift Type Casting secara tuntas disertai aneka contoh aplikasinya. Yuk langsung saja kita simak bersama tutorialnya!

Table of Contents

Belajar Swift Type Casting : Mendefinisikan Hierarki Kelas (Class)

Type Casting dipakai untuk memeriksa jenis instance di Swift, guna mengetahui apakah komponen tersebut masuk ke dalam jenis kelas tertentu.

Ia juga akan turut mengecek susunan hierarki class dan subclass dari instance. Apabila tipe instance yang dicek berada pada struktur yang berbeda, maka Type Casting akan  memindahkannya untuk menyamaratakan kedudukan.

Contoh coding definisi hierarki class pada Swift Type Casting:

class Subjects {
   var physics: String
   init(physics: String) {
      self.physics = physics
   }
}

class Chemistry: Subjects {
   var equations: String
   init(physics: String, equations: String) {
      self.equations = equations
      super.init(physics: physics)
   }
}

class Maths: Subjects {
   var formulae: String
   init(physics: String, formulae: String) {
      self.formulae = formulae
      super.init(physics: physics)
   }
}

let sa = [ Chemistry(physics: "solid physics", equations: "Hertz"),
   Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz")]

let samplechem = Chemistry(physics: "solid physics", equations: "Hertz")
print("Instance physics is: \(samplechem.physics)")
print("Instance equation is: \(samplechem.equations)")

let samplemaths = Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz")
print("Instance physics is: \(samplemaths.physics)")
print("Instance formulae is: \(samplemaths.formulae)")

Ketika kode program di atas dijalankan memakai Swift Playfground, maka hasilnya akan menjadi sebagai berikut :

Instance physics adalah: solid physics
Instance equation adalah: Hertz
Instance physics adalah: Fluid Dynamics
Instance formulae adalah: Giga Hertz

Belajar Swift Type Checking (“is”)

Type Checking di Swift dilakukan dengan kode operasi “is”. Kode ini mencari tahu apakah sebuah instance termasuk ke dalam jenis subclass tertentu.

Apabila terbukti benar/cocok, maka Type Checking akan mengembalikannya sebagai ‘true’, dan menjalankan ‘false’ kalau sebaliknya. Contoh kode pemrogramannya adalah:

class Subjects {
   var physics: String
   init(physics: String) {
      self.physics = physics
   }
}

class Chemistry: Subjects {
   var equations: String
   init(physics: String, equations: String) {
      self.equations = equations
      super.init(physics: physics)
   }
}

class Maths: Subjects {
   var formulae: String
   init(physics: String, formulae: String) {
      self.formulae = formulae
      super.init(physics: physics)
   }
}

let sa = [
   Chemistry(physics: "solid physics", equations: "Hertz"),
   Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz"),
   Chemistry(physics: "Thermo physics", equations: "Decibels"),
   Maths(physics: "Astro Physics", formulae: "MegaHertz"),
   Maths(physics: "Differential Equations", formulae: "Cosine Series")]

let samplechem = Chemistry(physics: "solid physics", equations: "Hertz")
print("Instance physics is: \(samplechem.physics)")
print("Instance equation is: \(samplechem.equations)")

let samplemaths = Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz")
print("Instance physics is: \(samplemaths.physics)")
print("Instance formulae is: \(samplemaths.formulae)")

var chemCount = 0
var mathsCount = 0
for item in sa {
   if item is Chemistry {
      ++chemCount
   } else if item is Maths {
      ++mathsCount
   }
}

print("Subjects in chemistry contains \(chemCount) topics and maths contains \(mathsCount) topics")

 

Output dari kode di atas adalah:

Instance physics adalah: solid physics
Instance equation adalah: Hertz
Instance physics adalah: Fluid Dynamics
Instance formulae adalah: Giga Hertz
Subjek kimia (chemistry) mengandung 2 topik, dan matematika (math) memuat 3 topik

Belajar Swift Type Downcasting (“as?” dan “as!”)

Berikutnya ada Swift Type Downcasting. Ada dua jenis operator yang bisa kita gunakan untuk men-downcasting berbagai tipe subclass di Swift, yaitu “as?” dan “as!”.

Keduanya sama-sama digunakan untuk mengembalikan nilai dalam kondisi nihil (nol), namun pada situasi yang berbeda.

Kode “as?” dapat mengembalikan nilai opsional saat nilai instance kembali ke titik nihil. Sementara “as!” dipakai sewaktu terjadi kegagalan downcasting itu sendiri.

“as!” dapat mengembalikan force unwrapping seperti yang pernah dibahas dalam proses Swift chaining optional. Akibatnya, muncul runtime error sebagai penanda downcast gagal.

Contoh koding downcasting pada Swift:

Artikel Terkait  Tutorial Swift 25 : Memahami Swift Class untuk Pemrograman yang Lebih Mudah

class Subjects {
   var physics: String
   init(physics: String) {
      self.physics = physics
   }
}

class Chemistry: Subjects {
   var equations: String
   init(physics: String, equations: String) {
      self.equations = equations
      super.init(physics: physics)
   }
}

class Maths: Subjects {
   var formulae: String
   init(physics: String, formulae: String) {
      self.formulae = formulae
      super.init(physics: physics)
   }
}

let sa = [
   Chemistry(physics: "solid physics", equations: "Hertz"),
   Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz"),
   Chemistry(physics: "Thermo physics", equations: "Decibels"),
   Maths(physics: "Astro Physics", formulae: "MegaHertz"),
   Maths(physics: "Differential Equations", formulae: "Cosine Series")]

let samplechem = Chemistry(physics: "solid physics", equations: "Hertz")
print("Instance physics is: \(samplechem.physics)")
print("Instance equation is: \(samplechem.equations)")

let samplemaths = Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz")
print("Instance physics is: \(samplemaths.physics)")
print("Instance formulae is: \(samplemaths.formulae)")

var chemCount = 0
var mathsCount = 0

for item in sa {
   if let print = item as? Chemistry {
      print("Chemistry topics are: '\(print.physics)', \(print.equations)")
   } else if let example = item as? Maths {
      print("Maths topics are: '\(example.physics)', \(example.formulae)")
   }
}

Saat program di atas dijalankan di Playground, maka hasilnya adalah seperti ini:

Instance physics adalah: solid physics
Instance equation adalah: Hertz
Instance physics adalah: Fluid Dynamics
Instance formulae adalah: Giga Hertz
Chemistry topics adalah: 'solid physics', Hertz
Maths topics adalah: 'Fluid Dynamics', Giga Hertz
Chemistry topics adalah: 'Thermo physics', Decibels
Maths topics adalah: 'Astro Physics', MegaHertz
Maths topics adalah: 'Differential Equations', Cosine Series

Swift Type Casting : Any dan Any Object

Terakhir, ada Type Casting Swfit dengan kata kunci “Any” dan “Any Object”. Berikut fungsi dan contoh pemakaiannya:

Swift Type Casting “Any”

Kata kunci “Any” digunakan untuk mewakili instance dari tipe apapun, termasuk yang berupa tipe fungsi. Contoh pemrograman Type Casting “Any”:

class Subjects {
   var physics: String
   init(physics: String) {
      self.physics = physics
   }
}

class Chemistry: Subjects {
   var equations: String
   init(physics: String, equations: String) {
      self.equations = equations
      super.init(physics: physics)
   }
}

class Maths: Subjects {
   var formulae: String
   init(physics: String, formulae: String) {
      self.formulae = formulae
      super.init(physics: physics)
   }
}

let sa = [
   Chemistry(physics: "solid physics", equations: "Hertz"),
   Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz"),
   Chemistry(physics: "Thermo physics", equations: "Decibels"),
   Maths(physics: "Astro Physics", formulae: "MegaHertz"),
   Maths(physics: "Differential Equations", formulae: "Cosine Series")]

let samplechem = Chemistry(physics: "solid physics", equations: "Hertz")
print("Instance physics is: \(samplechem.physics)")
print("Instance equation is: \(samplechem.equations)")

let samplemaths = Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz")
print("Instance physics is: \(samplemaths.physics)")
print("Instance formulae is: \(samplemaths.formulae)")

var chemCount = 0
var mathsCount = 0

for item in sa {
   if let print = item as? Chemistry {
      print("Chemistry topics are: '\(print.physics)', \(print.equations)")
   } else if let example = item as? Maths {
      print("Maths topics are: '\(example.physics)', \(example.formulae)")
   }
}

var exampleany = [Any]()

exampleany.append(12)
exampleany.append(3.14159)
exampleany.append("Example for Any")
exampleany.append(Chemistry(physics: "solid physics", equations: "Hertz"))

for print in exampleany {
   switch print {
      case let someInt as Int:
         print("Integer value is \(someInt)")
      case let someDouble as Double where someDouble > 0:
         print("Pi value is \(someDouble)")
      case let someString as String:
         print("\(someString)")
      case let phy as Chemistry:   
         print("Topics '\(phy.physics)', \(phy.equations)")
      default:
         print("None")
   }
}

 

Lalu hasilnya adalah:

Instance physics adalah: solid physics
Instance equation adalah: Hertz
Instance physics adalah: Fluid Dynamics
Instance formulae adalah: Giga Hertz
Chemistry topics adalah: 'solid physics', Hertz
Maths topics adalah: 'Fluid Dynamics', Giga Hertz
Chemistry topics adalah: 'Thermo physics', Decibels
Maths topics adalah: 'Astro Physics', MegaHertz
Maths topics adalah: 'Differential Equations', Cosine Series
Integer value adalah 12
Pi value adalah 3.14159
Contoh Any
Topics 'solid physics', Hertz

Swift Type Casting “AnyObject”

Keyword “AnyObject” dipakai untuk merepresentasikan instance dari tipe kelas ‘any’. Contoh programmingnya:

class Subjects {
   var physics: String
   init(physics: String) {
      self.physics = physics
   }
}

class Chemistry: Subjects {
   var equations: String
   init(physics: String, equations: String) {
      self.equations = equations
      super.init(physics: physics)
   }
}

class Maths: Subjects {
   var formulae: String
   init(physics: String, formulae: String) {
      self.formulae = formulae
      super.init(physics: physics)
   }
}

let saprint: [AnyObject] = [Chemistry(physics: "solid physics", equations: "Hertz"),
   Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz"),
   Chemistry(physics: "Thermo physics", equations: "Decibels"),
   Maths(physics: "Astro Physics", formulae: "MegaHertz"),
   Maths(physics: "Differential Equations", formulae: "Cosine Series")]

let samplechem = Chemistry(physics: "solid physics", equations: "Hertz")
print("Instance physics is: \(samplechem.physics)")
print("Instance equation is: \(samplechem.equations)")

let samplemaths = Maths(physics: "Fluid Dynamics", formulae: "Giga Hertz")
print("Instance physics is: \(samplemaths.physics)")
print("Instance formulae is: \(samplemaths.formulae)")

var chemCount = 0
var mathsCount = 0

for item in saprint {
   if let print = item as? Chemistry {
      print("Chemistry topics are: '\(print.physics)', \(print.equations)")
   } else if let example = item as? Maths {
      print("Maths topics are: '\(example.physics)', \(example.formulae)")
   }
}

var exampleany = [Any]()
exampleany.append(12)
exampleany.append(3.14159)
exampleany.append("Example for Any")
exampleany.append(Chemistry(physics: "solid physics", equations: "Hertz"))

for print in exampleany {
   switch print {
      case let someInt as Int:
         print("Integer value is \(someInt)")
      case let someDouble as Double where someDouble > 0:
         print("Pi value is \(someDouble)")
      case let someString as String:
         print("\(someString)")
      case let phy as Chemistry:
         print("Topics '\(phy.physics)', \(phy.equations)")
      default:
         print("None")
   }
}

Kode di atas nantinya akan menghasilkan output sebagai berikut di Playground:

Instance physics adalah: solid physics
Instance equation adalah: Hertz
Instance physics adalah: Fluid Dynamics
Instance formulae adalah: Giga Hertz
Chemistry topics adalah: 'solid physics', Hertz
Maths topics adalah: 'Fluid Dynamics', Giga Hertz
Chemistry topics adalah: 'Thermo physics', Decibels
Maths topics adalah: 'Astro Physics', MegaHertz
Maths topics adalah: 'Differential Equations', Cosine Series
Integer value adalah 12
Pi value adalah 3.14159
Contoh Any
Topics 'solid physics', Hertz

Demikianlah ulasan belajar Swift “Type Casting” kali ini. Semoga tutorial di atas bermanfaat menambah pengetahuan Anda, ya!