本文を読み飛ばす

Swiftではmapと+を使って配列定数を定義できる

Swift で配列定数を定義する際に、map を使うこともできると今日初めて知った。例としては次のような感じ:

let distances = [1.0, 2.0, 4.0, 8.0].map({$0 * 25.4}) +     // inch
                [1.0, 2.0, 4.0, 8.0].map({$0 * 25.4 * 12})  // feet

これが役に立つことは、あまり無いんだろうなと思う。ただ、拙作の Dof Table の表における「行」をあらかじめ定義する際、短い距離のうちはインチ単位、ある程度長くなるとフィート単位に切り替えている。こういう定義をする場合、ハードコーディングでやると次のような感じになって読みにくいし、書きにくい。

let distances = [1.0 * 25.4,  2.0 * 25.4,  4.0 * 25.4,  8.0 * 25.4,   // inch
                 1.0 * 304.8, 2.0 * 304.8, 4.0 * 304.8, 8.0 * 304.8]  // feet

map を使うバージョンの方は、おそらく定数値がランタイムに演算されるだろうから、わずかに定数初期化コストが増加すると思う。それでも、まあアプリ起動時に一回だけ計算されるだけだし、保守性のメリットが上回ると思う次第。