日記
最近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全然わかってないのでこの表現は適切でないかも