Atitit.swift的新特性以及与java的对比改进方向attilax总结
Atitit.swift的新特性以及与java的对比改进方向attilax总结
1.defer关键字1 2.try!形式存在的“不失败”机制3 3.Guard 4 4.swift的新语法,可以很好地支持内部DSL 6 5.Tuple的好处Tuple就是不能update的list。Tuple比list操作速度快.6 6.私有属性?很多语言都没有,都靠使用者自觉 7 7.ref7
1.defer关键字在一些语言中,有try/finally这样的控制语句,比如Java。这种语句可以让我们在finally代码块中执行必须要执行的代码,不管之前怎样的兴风作浪。在Swift2.0中,Apple提供了defer关键字,让我们可以实现同样的效果。 这是目前为止我最爱的Swift新特性(又见最爱……)。defer语句与很多其他语言中的finally语句很像,不过它不需要与try语句绑定在一起,你可以把它放在任何你想放的位置。如果你写了defer{…},那么那个代码块中的代码就会在控制离开当前函数的范围时执行,无论函数最后是运行到了结尾,还是遇到了return语句,或者是抛出了错误。
作者::绰号:老哇的爪子(全名::AttilaxAkbarAlRapanui阿提拉克斯阿克巴阿尔拉帕努伊)汉字名:艾龙,EMAIL:1466519819@qq.com 转载请注明来源:http://blog.csdn.net/attilax
上述示例可以看到,在打印出“CheckPoint2”之后并没有打印出“Cleanuphere”,而是“CheckPoint3”,这就是defer的作用,它对进行了print("Cleanuphere")延迟。我们再来看一个I/O的示例:
上述示例是一个I/O操作的伪代码,如果获取到的ioStatus正常,那么该方法没有问题,如果ioStatus取到的是error,那么会被guard语句抓到执行return操作,这样的话closeFile(file)就永远都不会执行了,一个严重的Bug就这样产生了。下面我们看看如何用defer来解决这个问题:
相关内容
|