Avatar
Avatar
shiz
MainActorの場合はMainActor.runが使えないですかね?(すいません何か勘違いしてるかもしれないです) https://github.com/apple/swift/blob/main/stdlib/public/Concurrency/MainActor.swift#L46 (edited)
ありがとうございます!何か手段があった気がしてたんですが、これかもしれないです。 MainActor に戻す手段をどこかで見たなぁと思って WWDC のセッションや Proposal 漁ってたんですが、 { @MainActor in ... } を見つけて、これだったかも?ってなってました。
2:08 AM
↓の T.self をデフォルトにするのおもしろいですね。 JSONDecoder.decode とかもこれやってほしいかも。 static func run<T>(resultType: T.Type = T.self, body: @MainActor @Sendable () throws -> T) async rethrows -> T
2:12 AM
@swift-5.4.3 import Foundation extension JSONDecoder { func myDecode<T: Decodable>(_ type: T.Type = T.self, from data: Data) throws -> T { try decode(type, from: data) } } let decoded: [Int] = try! JSONDecoder().myDecode(from: "[2, 3, 5]".data(using: .utf8)!) print(decoded)