您现在的位置:首页 >石造城堡 >正文

Swift中Optional的map和flatMap

时间2019-01-11 来源:末日进化网

  核心提示:阳春三月,夭夭碧枝,皎皎风荷,暖风熏醉,染了春扉。安静的午后,静静的梳理着自己的思绪,轻轻的敲打着心语,不想惊扰沉睡的记忆,不想扯住渐行渐远的思绪。初春的日头,终究是有了暖意的了,鹅黄的嫩绿轻轻浅浅的...
 

用过Swift的读者想必对mapflatMap不陌生,它们定义在SequenceType协议及其extension中,讲它们用法的文章一大堆,我就不拾人牙慧了。

但是不知读者是否知道,Swift中的Optional类型,也有map江西治癫痫病的医院>flatMap方法。

首先看这样的场景:

不妨假设avatarURL的来源以及是否有值我们不得而知,因此我们将其定义为一个Optional<String>类型。在使用它时,我们需要做一系列的判断赋值:

这样的场景通常在解析网络请求返回癫痫药物的价钱的JSON时很常见,不知不觉就出现了所谓的「大括号阶梯」。

我们可以用Optional类型中定义的mapflatMap来避免这种情况,先看下用了之后会变成什么样子:

打开Optional的定义,mapflatMap治疗癫痫病比较好的方法一览无余,你应该顺便发现,Optional在Swift里是一个enum。

去掉@noescapethrows,它们的原型更加清晰:

在这两个泛型函数中,Wrapped是Optional的泛型参数,即Optional包裹的类型。两个函数唯一的天津治癫痫哪个医院好不同是接收的参数「函数的返回值」不同,一个期待函数返回U,另一个期待函数返回U?

两个函数在表现上是类似的,如果可选类型有值(!= nil),则返回f(Wrapped Value),否则直接返回nil。

那么不难理解前面的例子:

作者:不详 来源:网络
  • 爱美文网(www.aimeiwenw.com) © 2016 版权所有 All Rights Reserved.
  • 豫ICP备15019302号
  • Powered by laoy ! V4.0.6