Swift構造器(Initializer)與析構器(Deinitializer)

爲了初始化結構體和類等類型的實例屬性。html

默認構造器spa

[html] view plaincopy.net

  1. struct Fahrenheit {  orm

  2. var temperature: Doubleinit(){  htm

  3. temperature = 32.0  對象

  4. }   blog

  5. }   get


var f = Fahrenheit() //調用默認構造器 init() ,沒有參數 沒有返回值。it

[html] view plaincopyio

  1. println("The default temperature   is \(f.temperature)°Fahrenheit")  

  2. // prints "The default temperature is 32.0° Fahrenheit"  


自定義構造器

 

 定義類兩個構造器:init(fromFahrenheit:)  和init(fromKelvin:)

 

[html] view plaincopy

  1. struct Celsius {  

  2. var temperatureInCelsius: Double = 0.0  

  3.  init(fromFahrenheit fahrenheit: Double) {  

  4.  temperatureInCelsius = (fahrenheit - 32.0)  

  5. / 1.8  

  6.  }  

  7.  init(fromKelvin kelvin: Double) {  

  8.   temperatureInCelsius = kelvin -273.15  

  9.    }  

  10.  }  

  11.  let boilingPointOfWater = Celsius(fromFahrenheit:212.0)  

  12.  // boilingPointOfWater.temperatureInCelsius is 100.0  

  13.  let freezingPointOfWater =Celsius(fromKelvin:273.15)  

  14.  // freezingPointOfWater.temperatureInCelsius is 0.0  



析構器(Deinitializer)


析構器與構造器相反,在對象釋放時候調用。 使用關鍵字 deinit,語法以下:

[html] view plaincopy

  1. deinit {  

  2. // perform thedeinitialization  

  3. }  



實例:

 

[html] view plaincopy

  1. class Player {  

  2.  var coinsInPurse:Int init(coins: Int) {  

  3. println("call init")  

  4. coinsInPursecoins   

  5. }  

  6. func winCoins(coins: Int) {  

  7. coinsInPurse+= 10  

  8. }  

  9. deinit {  

  10. coinsInPurse = 0  

  11. }  

  12. }  

  13.   var playerOne: Player? = Player(coins: 100)  

  14.  println("coinsInPurse   :  \(playerOne!.coinsInPurse)  

  15.  coins")  

  16. playerOne = nil  

  17. println("PlayerOne has leftthe game")  



Swift交流討論論壇論壇:http://www.cocoagame.net

歡迎加入Swift技術交流羣:362298485

相關文章
相關標籤/搜索