Avatar
https://discord.com/channels/291054398077927425/306995750418513920/882003927468486707 で話してて、↓みたいな run 関数が標準ライブラリにあるとうれしい気がしてきた。 func run<T>(_ body: () -> T) -> T { body() } よくあるプロパティの初期化が var foo: Foo = { ... return Foo(...) }() みたいなのも var foo: Foo = run { ... return Foo(...) } と書ける。 () でクロージャ式即実行の気持ち悪さが緩和されそう。 非同期版の func run<T>(_ body: () async -> T) async -> T { await body() } もあれば、 MainActor に戻す処理も await { @MainActor in self.foo = foo }() じゃなくて await run { @MainActor in self.foo = foo } と書ける。