Swift编程中的一些类型转换方法详解

2020-01-08 22:36:46于海丽

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


当我们使用 playground 运行上面的程序,得到以下结果。

 


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

类型转换:任何与任何对象
为了表示实例属于任何类型包括函数类型,使用“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")
println("Instance physics is: (samplechem.physics)")
println("Instance equation is: (samplechem.equations)")