以下を機能させようとしています:
enum Foobar {
case values([Int])
case singleThing(Double)
subscript(index:Int) -> Int? {
get {
switch self {
case .values (let numbers):
return numbers[index]
default:
return nil
}
}
set {
switch self {
case .values (let numbers):
numbers[index] = newValue!
default:
break
}
}
}
}
上記のコードはコンパイルされません。numbers
を割り当てたときに更新しているという事実について不平を言いlet
ます。で置き換えてみましlet
たvar
。コンパイルします。ただし、元の配列自体ではなく、関連付けられた配列の値のコピーを更新するため、何もしません。少なくとも私はそうなると思います。
添え字付け可能な値を関連付けてset
、適切な場合にプロパティを実装できるようにするアプローチはありますか?