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

  • 相关阅读:
    on duplicate key update之多列唯一索引
    js 判断 微信浏览器 安卓/苹果 pc/移动
    history 和 hash (转)
    路由vue-router
    添加图标ico
    vue项目结构
    vue2.0项目的构建
    echarts使用 图例改变和默认不选中
    微信自定义菜单设置 及 emoji表情更换
    复制/设置剪切板内容 (浏览器/nativejs)
  • 原文地址:https://www.cnblogs.com/iOS-Blog/p/3818889.html
Copyright © 2011-2022 走看看