以前紹介した、SegmentedControlの再現実装でつまづいたことを思い出したのでメモ。
実装し始めの頃に、無邪気に実装していると、ある時点で以下のようなコンパイルエラーが発生するようになった。
The compiler is unable to type-check this expression in reasonable time; try breaking up the expression into distinct sub-expressions
その頃の状況を再現すると、以下のような実装であった。(完成形の実装はこちら。)
型推論が原因であるならばと、この中で型が明示されていないForEach
クロージャのパラメタindex
に着目した。このindex
を直接使用しているすべての箇所について、example(index: Int)
のように関数に切り出して、関数のパラメタによって型を明示してみると、この問題は解決できた。
上記例では該当箇所はindex == self.selectedIndex
のみだが、実はこうした部分がいくつもあったのだった。