(2018.7.30更新)
最近在看 Swift 的一篇 博客 的时候,发现了一个神级 API:reverse(),这个函数用来反转一个序列,Swift4 中 String 做了一些调整。我们可以直接将 String 作为一个序列进行反转,然后使用 String 的便利初始化方法将反转后的序列转为 String 类型,整个过程只需要一行代码,而且性能比我们自行封装方法要高不少,如果你正在查找 Swift 中反转字符串的方法,请看下面示例代码。然后就不必再往下看了。。。
1 | let abc: String = "abc" |
最近在工作的时候,遇到一个需求,希望能将字符串倒序排列并输出。
先来看一下OC的实现方式:
1 | // 字符串倒序 输入"1234" 输出"4321" |
搞定之后,我灵机一动,又有好些天没有碰 Swift 了,这样下去岂不是要荒废?赶紧打开 Playground,用 Swift 实现一波。
好吧,我承认我懒癌发作了,打开 objectivec2swift.com ,先来个自动转换,看看都发生了哪些变化,结果很快就出来了:
1 | // 字符串倒序 输入"1234" 输出"4321" |
不过将代码拷贝到 Playground(Xcode10 beta4)里面,代码是无法编译通过的。而且翻译的代码里,有很多桥接 OC 的地方,这简直是要逼死 Swifter 强迫症啊!
面对这种状况,肯定是不能轻易认输滴,来吧,手动模式走起。一段看似简单的代码,上手写的时候才发现,Swift 里对 String 相关的 API 改动确实是太大了,连写个完整的语句都困难了。这也怪我平时太眼高手低,哎!
眼看饭点已经过去,硬着头皮也要往下搞了。既然 API 改动大,不妨把 API 文档先过一遍。
一份外卖送到的时间,一套 Swifty 的代码就出炉了:
1 | // 完全逆序 输入 "1234" 输出 "4321" |
其实 Swift 的代码风格是趋于简单化了,而且易读性也很好,增强了类型推断和可选类型,日后维护起来也会得心应手。
目前 Swift 的 API 基本已经完全脱离了OC的语法风格,使用工具简单的将OC代码转换成Swift代码的方式已经慢慢的行不通了。刚从OC转过来的同学估计会一脸懵逼,目前Swift发展已经趋于成熟,ABI估计一年内也可以稳定下来,平时多关注,用时不懵逼 🤣 。
传送门:Swift官方文档