在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
听说你已经学习Swift几个月了,有没有想更进一步成为Swift高手的想法?我这里有11招秘技,各位施主且听我慢慢道来,结个善缘。 1. 扩展(Extension)任务: 求数字的平方。
为了求5的四次方我们被迫创建变量 squaredOfFive — 高手可不喜欢被迫定义一个无用的变量。
2. 泛型(Generics)任务:打印输出数组内所有的元素。
居然要定义这么多函数? 菜鸟能忍高手不能忍!!!
3. For 遍历 vs While 遍历任务:打印 5 次 陆家嘴
被迫定义了变量 i 来确保打印 陆家嘴 5 次。
上面的代码实在是简洁,美妙。 4. Gaurd let vs if let任务 : 让我们写个欢迎新用户的程序。
这些令人讨厌的嵌套代码,我们要消灭它
注意这里如果myUsername 或 myPassword nil,都会提前结束,否则就会打印 “优衣库欢迎, XXX” 5. 计算属性 vs 函数任务:计算圆的直径
上面我们创建了2个毫无关系的函数,可是直径和周长两者真的没有关系吗?
现在半径和直径相互依赖,真实地反应了两者的关系。 6. 枚举 - 类型安全任务:卖门票
“Adult”, “Child”, “Senior” 这里都是硬编码,你每次需要输入手动输入这些字符,记得我们上面讲到的吗? 手动键入越少,错误越少,生活越美好。
这样你就避免了不小心输入错误的问题,因为 “.adult”, “.child”, “.senior” 被定义成了enum', 任何不在预定义范围内的实例都会被Xcode毫不留情的指出来,合理利用集成开发环境是高手必备的。 7. 空合运算符任务: 用户选择微博主体颜色。
这也太臃肿了吧,让我们来减减肥。
稍微解释一下, 如 userChosenColor 为 nil, 则选择 defaultColor, 否则则userChosenColor.
8. 函数式编程任务: 获取偶数。
这种for循环真是冗长,让人看的昏昏欲睡。
有没有感觉函数式编程让你看起来聪明多了。 9. 闭包 vs 函数任务: 求两个数字的和。
为了这个功能我还需要记住函数名 和 变量名? 能不能少一个呢?
10. 属性观测器任务:计算圆的直径
这里是不需要专门定义函数的。
willSet 会在给变量radius赋值前调用,而 didSet 会在给变量radius赋值后调用。 11.便利初始化任务: 一个人有多少根手指和脚趾
因为绝大部分人都有十根手指和脚趾,可以初始化时预先赋值。
Swift中可以在init初始化方法前加上convenience关键字,这类方法主要提供使用上的方便。 所有的convenience初始化方法都必须调用同一个类中的顶级初始化方法完成初始化。另外convenience的初始化方法是不能被子类重写或从子类中以super的方式被调用的。 12. 延迟初始化任务: 定义一个包含pi常量作为属性的类。
计算pi的工作量是繁重的,且对于调用者不是必须的,可以假想下MathHelper内包含数十个类pi常量的场景,如果不在使用的时候再初始化常量会浪费多少宝贵的计算资源。
lazy 一方面可以让初始化成本较高的变量延迟初始化,提高资源利用效率。另一方面可以延迟初始化具有外部依赖的属性变量。
上面的例子中,属性personalizedGreeting依赖于变量name。 十二条技巧讲述完毕,打完收工。 作者:豆志昂扬 链接:https://www.jianshu.com/p/eabaaae88533 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 |
请发表评论