ぜのぜ

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

63日目

Asynchronous Sequences

配列全体をasyncに取得することができるのは前回書いたが,各要素をasyncに取得することもできる.

import Foundation

let handle = FileHandle.standardInput
for try await line in handle.bytes.lines {
    print(line)
}

そういえばXcode 13をダウンロードしてなかったのでしたけど解凍に時間がかかって飽きたので終わり.書いたことなかったのでSequenceに準拠するstructを書いてみた.

import Foundation

struct SomeSequence: Sequence {
    func makeIterator() -> some IteratorProtocol {
        return SomeIterator()
    }
}

struct SomeIterator: IteratorProtocol {
    private var _limit = 5

    mutating func next() -> Bool? {
        if _limit < 0 {
            return nil
        } else {
            _limit -= 1
            return Bool.random()
        }
    }
}


for i in SomeSequence() {
    print(i)
}