zoukankan      html  css  js  c++  java
  • 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)


    析构器与构造器相反,在对象释放时候调用。 使用keyword 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交流讨论论坛论坛:http://www.cocoagame.net

    欢迎增加Swift技术交流群:362298485



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    LeetCode
    算法
    GitHub
    GitHub
    git
    将博客搬家至CSDN
    base64与图片互转
    windows下mongodb数据库搭建过程遇到问题
    mongodb数据插入语句与navicat导入mongodb的json结构
    Visual C++安装失败解决:Error 0x80240017: Failed to execute MSU package.
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4713409.html
Copyright © 2011-2022 走看看