Arrays Swift语法:在setter中访问的数组元素的索引?
假设我有一个带didSet的字符串数组:Arrays Swift语法:在setter中访问的数组元素的索引?,arrays,swift,setter,subscript,Arrays,Swift,Setter,Subscript,假设我有一个带didSet的字符串数组: var bar: [String] = [] { didSet { println("Set to \(bar)") } } 设置一些元素可以让我们: bar = ["Hello", "world"] // Set to [Hello, world] bar[0] = "Howdy" // Set to [Howdy, world] 问题:在我的didSet中,如何获取已设置元素的索引?您无法直接访问已更改元素的索引,
var bar: [String] = [] {
didSet {
println("Set to \(bar)")
}
}
设置一些元素可以让我们:
bar = ["Hello", "world"] // Set to [Hello, world]
bar[0] = "Howdy" // Set to [Howdy, world]
问题:在我的didSet中,如何获取已设置元素的索引?您无法直接访问已更改元素的索引,部分原因是在特定索引处设置新值只是触发
didSet
处理程序的一个操作。任何变异方法都将导致调用:
bar = ["Hello", "world"] // Set to [Hello, world]
bar[0] = "Howdy" // Set to [Howdy, world]
bar.insert("cruel", atIndex: 1) // Set to [Howdy, cruel, world]
bar.replaceRange(0..<1, with: ["So", "long"]) // Set to [So, long, cruel, world]
bar.removeRange(2..<3) // Set to [So, long, world]
bar.append("!") // Set to [So, long, world, !]
bar.removeAll() // Set to []
bar=[“你好”,“世界”]//设置为[你好,世界]
条形图[0]=“你好”//设置为[你好,世界]
插入(“残忍”,atIndex:1)//设置为[你好,残忍,世界]
bar.replaceRange(0..Ok…这很有意义。因此,可能问题是:如果要重写数组的subscript()方法,那会是什么样子?我当时对语法一无所知…问题是,array
是一个结构,所以不能子类化和重写subscript。(这是Objective-C的坚定支持者开始咬牙切齿的地方。)您需要创建一个全新的类型,将数组作为属性,并在其下标和get/set方法中使用所需的逻辑。您的用例是什么?这是一个您将要创建和使用的数组,还是您试图从其他地方监视数组中的更改?是后者--数组是一个属性,而我想知道它什么时候会改变。(是的,有其他的方法来实现该功能,但我想知道是否有一些聪明的方法可以用这种时髦的新语言来实现!)我想知道是否有可能实现对数组的扩展?