近来总想着提升自己, 总也是又把之前看到一半的书籍开始看起
虽说了解旧的实现也是对学习有所帮助, 但给自己的计划时间并不多, 也想直接过度到 swift
因做了五年多的 java web, 对 web 前端也多少具备开发的能力, 想着也学学客户端的, 奈何手头上没有安卓的机子, 便也先从 ios 开始
客户端的东西并不像服务端一样, 经常都是随着系统升级换代, 以故多次学习, 每每找到的某一种 api 的调用方式, 却又怎也无法在新版本中使用
与 java 对比, 类库也简单许多, 换言之: 没有太多完善现成的工具可用
其原因, 初 想来是:
1,swift 设计时便要考虑 object-c 的兼容性, 以故更多的工具都是从 object-c 封装而来, 而非完全使用自身的语言特性所设计实现
2,swift 还处于一个高速迭代的生命周期, 用的是破而后立的方式, 而非万事考虑兼容旧版本的方式
其语言特性, 初步看来和 java 这类型的高级程序语言相差不大
但其原生支持的可选类型 Optional 确实是一个比较好的概念, 以及函数式编程的方式
这些在 java 中已经有了实现, 虽说有些依样画葫芦, 但也总归说明语言的优点是互相借鉴
java 中有了 Optional<T> 的泛型支持, 但由于没有在基础架构中实现, 需要大量自行包装对象, 甚是麻烦, 如下
- Optional<Customer> customerOptional = Optional.ofNullable(customer);
- customerOptional.orElse(new Customer());
- customerOptional.map(Customer::getUsername).orElse("无名");
函数式编程则有一个新的类库 stream
- List<Customer> arrayList = Lists.newArrayList();
- List<Customer> admin = arrayList.stream().filter(customer -> customer.getUsername().equals("admin")).collect(Collectors.toList());
- List<String> userNameList = arrayList.stream().map(customer -> customer.getUsername()).collect(Collectors.toList());
来源: http://www.bubuko.com/infodetail-2769597.html