//*****************Deinitialization 反初始化***************
// 关键字 denit
// 在实类对象被销毁的时候, 会立刻调用 denit
// 每个类对象都有 deinitializer 方法
// denitializer 不需要传入任何参数
// denitializer 在对象销毁前,自动被调用,不需要自己手动调用
// 子类的denitializer 继承于 父类的 denitializer
// 子类的 denitializer 调用时 父类的 denitializer 会自动调用
// 无论子类是否实现 denitializer, 在对象销毁前 都会调用父类的 denitializer
// denitializer 调用时 对象还没有销毁, 可以获取所有的属性,并对属性进行处理
class Bank{
// 银行存款
static var coinsInBank = 10_000
// 取出
static func distribute(coins numberOfCoinsRequested: Int) -> Int{
let numberOfCoinsToVend = min(numberOfCoinsRequested,coinsInBank)
coinsInBank -= numberOfCoinsToVend
return numberOfCoinsToVend
}
//存入
static func receive(coins: Int){
coinsInBank += coins
}
}
class Player{
// 玩家钱包
var coinsInPurse: Int
// 初始化 coins: 银行取出的金币
init(coins: Int){
coinsInPurse = Bank.distribute(coins: coins)
}
//赢得的金币 装入钱包
func win(coins:Int){
coinsInPurse += Bank.distribute(coins: coins)
}
// 反初始化
deinit {
// 银行收回 金币
Bank.receive(coins: coinsInPurse)
}
}
var playerone: Player? = Player(coins: 100)
print("a new player has joined the game with \(playerone!.coinsInPurse) coins")
//a new player has joined the game with 100 coins
print("There are now \(Bank.coinsInBank) coins left in the bank")
//There are now 9900 coins left in the bank
playerone!.win(coins: 2_000)
print("PlayerOne won 2000 coins & now has \(playerone!.coinsInPurse) coins)")
playerone = nil
print("PlayerOne has left the game")
print("The bank now has \(Bank.coinsInBank) coins")
//The bank now has 10000 coins
Swfit-Deinitialization
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 项目初衷:swift 学习交流 项目说明:该项目的主要目的是为了交流学习,请勿用于商业用途。项目里面的资源是来自网...