TCAの.runってなに?
.runはTCAで使われるEffectのひとつ
Effectって?
It is the perfect place to do side effects, such as network requests, saving/loading from disk, creating timers, interacting with dependencies, and more.
ネットワークリクエスト、ディスクからのセーブ/ロード、タイマーの作成、依存関係とのやり取りなど、サイドエフェクトを行うのに最適です。
サイドエフェクトって?
それ以外の副作用(side effect)のこと
副作用って?
プログラミングにおける関数には作用2種類出る
-主たる作用
-それ以外の作用
プログラミングにおいて、式の評価による作用には、主たる作用とそれ以外の副作用(side effect)とがある。 式は、評価値を得ること(※関数では「引数を受け取り値を返す」と表現する)が主たる作用とされ、それ以外のコンピュータの論理的状態(ローカル環境以外の状態変数の値)を変化させる作用を副作用という。https://ja.wikipedia.org/wiki/副作用_(プログラム)
主たる作用って?
同じ条件で何回呼び出しをしても同じ結果が返ってくるもの。
それ以外の作用って?
APIの呼び出しなど、同じ条件で呼び出しても同じ結果が返ってくるとは限らないもの。
他の機能に影響を与えてしまう。
→副作用
.runって?
Wraps an asynchronous unit of work that can emit actions any number of times in an effect.
https://pointfreeco.github.io/swift-composable-architecture/main/documentation/composablearchitecture/effect/run(priority:operation:catch:fileid:filepath:line:column:)
→非同期処理を実行できる
.runで使われるsendって??
渡されたActionを実行してくれるもの
return .run { send in
do{
//ここで非同期処理
await send(成功した時に送りたい処理とか)
}
catch{
await send(失敗した時の処理とか)
}