ArrayやばいOptionalにはmapというメソッドが実装されている。これは中身に対して関数適用するというものです。for文で「やればいいじゃないの?」といわれたのでその差を解説する。
例えばArray
型を中心にしたプログラミング
後者の考え方はObjective-Cをやってきた人には馴染みが薄いかもしれません。これらは元の型を別の型に変える事を中心に考えるやり方です。実装したいことがあった場合、初めの型と終わりの型を考える。
もしその二つの型が直接変換できない場合は、途中を埋める型を考える。
各型に変換していく関数を書き、それを関数適用することで、実装を行う。
殻を気にしない
ArrayやOptionalがただの殻だと考えた場合は、これらは同じように扱うことができる。Optionalが要素が0個か1個の配列だと考えれば、mapがあることで非常に自然に中身に対して操作ができる。SetやDictionayも同様である。
mapだけではない
Swiftではこれらの型を総じてCollectionTypeというprotocolによって実装されている。CollectionTypeであればどの殻であっても同じように扱うことができる(特にSwift 2.0以降では)。CollectionTypeには他にfilterやreduceなど様々な便利なメソッドが実装されている。これらのメソッドを使えば、for文をほとんど使うことなくプログラミングできるようになるだろう。
まとめ
型を中心に考えることによってCollectionTypeを十分に扱えるようになるだろう。