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

來源:互聯網
上載者:User

標籤:blog   http   使用   strong   art   html   

為了初始化結構體和類等類型的執行個體屬性。

預設構造器

 

[html] view plaincopy 
  1. struct Fahrenheit {  
  2. var temperature: Doubleinit(){  
  3. temperature = 32.0  
  4. }   
  5. }   

 

var f = Fahrenheit() //調用預設構造器 init() ,沒有參數 沒有傳回值。

 

[html] view plaincopy 
  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. coinsInPurse= coins   
  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

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.