データベースやるやる詐欺。今回も寄り道です。

「三角形を描画するコード」を整理することにしました。

このコードは一番最初の頃に作ったので、「ひとつの三角形を描くこと」を前提にしています。沢山並べるにしても、基本は同じコードを使っているので、三角形を描けば描くほど、呼び出す数が増えに増えて、コードを複雑にしていました。

ニャンコ先生「それをまとめるわけだニャ」

そういうわけです。

では、整理していきましょう。

まず、三角形をひっくり返すのは「各点のY座標」を入れ替えればいいので、「正三角形」と「逆三角形」のコードに「Y座標の指定」を後からできるような口を作って、共通化します。

次に、呼び出し側のループ処理に、元々作っていた「HStack分」に加えて、「VStack分」も用意、2重でループを回すことで、コードの大幅な削減を目指します。

……と、こうして書くとすぐ終わりそうな作業なのですが、これがムズカシイのなんのって。特に三角形の共通化は、「子ビューの初期化処理」が前回の「親ビューの初期化処理」より複雑で、正常動作している(ように見える)今現在も、「なんでこれで動いているのかしら」ということがわかっていなかったりします。古代兵器か何かかしら、これ。

SwiftUIって、変数や引数の「型変換」がすごくシビアにできている気がします。

ポンッと値を代入したいだけなのに、なぜか発生するエラーの数々。表示系のコーディングを徹底的に洗練した結果、データ連携の部分にシワ寄せが来ている、そんな雰囲気です。

とは言え、アレヤコレヤ悪戦苦闘した結果、なんとか上記2点のコードの整理ができました。超スッキリ。今後の拡張にも少しは耐えられそうです。

では、次こそデータベースを深堀りしようと思います。でも、アニメーションもやりたいなーとか、そんなことも思ったり思わなかったり。


Apple Developer Documentation
Structure > ForEach
A structure that computes views on demand from an underlying collection of identified data.
外部リンクを開く