ぜのぜ

しりとりしようぜのぜのぜのぜ

64日目

日記

コンビニのご飯って少ないよね

今日書いたコード

playgroundでは動かないらしい

import Foundation
import _Concurrency

struct Photo {}

func downloadPhoto(named: String) async -> Photo {
    await Task.sleep(2 * 1_000_000_000)
    return Photo()
}

Task<[Photo], Never>(priority: nil, operation: {
    async let firstPhoto = downloadPhoto(named: "first")
    async let secondPhoto = downloadPhoto(named: "second")
    async let thirdPhoto = downloadPhoto(named: "third")

    let photos = await [firstPhoto, secondPhoto, thirdPhoto]
    print(photos)

    return photos
})

初めて知ったこと

こう書くとphotosの定義の行でsuspendされる.

こんな感じの邪悪な使い方ができそう.

async let thumbnail = downloadThumbnail()
async let title = downloadTitle()

_ = await [thumbnail, title]