15.析构函数
? 析構器只適用于類類型,當一個類的實例被釋放之前,析構器會被立即調用。析構器用關鍵字deinit來標示.
?1.析構過程
2.示例
//Bank類管理一種虛擬硬幣,確保流通的硬幣數量永遠不可能超過 10,000。在游戲中有且只能有一個Bank存在 class Bank {static var coinsInBank = 10000;static func vendCoins(numberOfCoinsToVend: Int) -> Int{let retValue = min(numberOfCoinsToVend, coinsInBank);coinsInBank -= retValue;return retValue;}static func receiveCoins(coins: Int){coinsInBank += coins;} }class Player {var coinsInPurse: Int;init(coins: Int){coinsInPurse = Bank.vendCoins(coins);}func winCoins(coins: Int){coinsInPurse += Bank.vendCoins(coins);}deinit{Bank.receiveCoins(coinsInPurse);} }var playerOne: Player? = Player(coins: 100); print("Player have \(playerOne!.coinsInPurse) coins, Bank have \(Bank.coinsInBank)"); //"Player have 100 coins, Bank have 9900\n" playerOne?.winCoins(2000); print("Player have \(playerOne!.coinsInPurse) coins, Bank have \(Bank.coinsInBank)"); //"Player have 2100 coins, Bank have 7900\n" playerOne = nil; print("Player have \(playerOne?.coinsInPurse) coins, Bank have \(Bank.coinsInBank)"); //"Player have nil coins, Bank have 10000\n"?
轉載于:https://www.cnblogs.com/LeeGof/p/5681712.html
總結
- 上一篇: [Machine Learning] l
- 下一篇: java-并发-并发容器(3)