ぜのぜ

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

128日目

日記

最近DiscordでWoTを配信している.たまに人が入ってきてくれるので嬉しい.

今日書いたコード

import Foundation

class Cls {
    subscript(arg param: Int) -> Int {
        return param * 2
    }
}
Cls()[arg: 1]

actor SomeActor {
    var arr = [Int]()

    subscript(_ index: Int) -> Int{
        get {
            Thread.sleep(forTimeInterval: 0.5)

            return arr[index]
        }

        set {
            arr[index] = newValue
        }
    }
}

let some = SomeActor()
Task {
    some[0] = 0 // Actor-isolated subscript 'subscript(_:)' can not be mutated from a non-isolated context
    some.arr.append(0) // Actor-isolated property 'arr' can not be mutated from a non-isolated context
    print(await some[0])
}

感想

今日はSubscript Declarationという節だった.昨日,Actorのプロパティは外側からは変更できない*1という話をしたのを思い出してsubscriptのsetterがどうなるか試したら同じ理由で駄目そうだった.

*1:Actor全然わかってないのでこの表現は適切でないかも