閱讀389 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

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

默認構造器

struct Fahrenheit {
var temperature: Doubleinit(){
temperature = 32.0
} 
} 

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

println("The default temperature   is \(f.temperature)°Fahrenheit")
// prints "The default temperature is 32.0° Fahrenheit"

自定義構造器

 

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

 

struct Celsius {
var temperatureInCelsius: Double = 0.0
 init(fromFahrenheit fahrenheit: Double) {
 temperatureInCelsius = (fahrenheit - 32.0)
/ 1.8
 }
 init(fromKelvin kelvin: Double) {
  temperatureInCelsius = kelvin -273.15
   }
 }
 let boilingPointOfWater = Celsius(fromFahrenheit:212.0)
 // boilingPointOfWater.temperatureInCelsius is 100.0
 let freezingPointOfWater =Celsius(fromKelvin:273.15)
 // freezingPointOfWater.temperatureInCelsius is 0.0


析構器(Deinitializer)


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

deinit {
// perform thedeinitialization
}


實例:

 

class Player {
 var coinsInPurse:Int init(coins: Int) {
println("call init")
coinsInPurse= coins 
}
func winCoins(coins: Int) {
coinsInPurse+= 10
}
deinit {
coinsInPurse = 0
}
}
  var playerOne: Player? = Player(coins: 100)
 println("coinsInPurse   :  \(playerOne!.coinsInPurse)
 coins")
playerOne = nil
println("PlayerOne has leftthe game")


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

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



最後更新:2017-04-03 05:38:54

  上一篇:go intent flags標記
  下一篇:go ant的高級使用,ant命令詳解,ant打包,ant編譯後打包去掉jar文件