Swiftがオープンソース化されたことにより、私たちでも標準ライブラリの実装を読むことができるようになりました。そこで、今回はOptional型のmap()とflatMap()の2つを読んでみて、どういう違いがあるのかを実装面から考えてみようと思います。 Optional型の定義は、stdlib/public/core/Optional.swift ファイルにあります。 public enum Optional<Wrapped> : _Reflectable, NilLiteralConvertible { case None case Some(Wrapped) : 今更かもしれませんが、Optional型とは様々な型のオブジェクトをSomeのAssociated Valueとして持てるenumのことです。ちなみにWrappedは単なるジェネリック型Tのtypealiasで、上のcase