zoukankan      html  css  js  c++  java
  • Swift构造器(Initializer)与析构器(Deinitializer)

    为了初始化结构体和类等类型的实例属性。

    默认构造器

    [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

  • 相关阅读:
    C语言-第32课
    typeof和clamp
    C语言void*和*p的使用
    C语言二级指针和一级指针
    C语言结构体变量成员之指针变量成员的坑
    控制硬件三部曲
    C语言const char*使用
    jiffies是什么
    TPO3-1 Architecture
    相关关系|相关系数|线性关系|
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/3818889.html
Copyright © 2011-2022 走看看