【发布时间】:2017-06-26 22:23:12
【问题描述】:
我正在尝试扩展Array<MutatingCollection>,以便可以镜像数组数组的内容,但编译器说我不能在数组中的元素上调用reverse(),尽管reverse() 在@ 中定义987654325@协议。
我想做这样的事情:
var table = [[0,1,2],
[3,4,5],
[6,7,8]]
table.mirror()
//table now [[2,1,0],
// [5,4,3],
// [8,7,6]]
这是我的(不工作的)代码:
extension Array where Element == MutableCollection {
mutating func mirror() {
for index in self.indices {
self[index].reverse()
}
}
}
我也试过self.map {array in array.reverse()}(我认为做同样的事情,但我不完全理解map())两种方式都会导致相同的错误消息:
Member 'reverse' cannot be used on value of type 'MutableCollection'
编辑:我可以直接调用相同的代码,它可以按我的预期工作。
也许我使用 extension 不正确,或者 Swift Playgrounds 以某种方式阻止了我的访问。
【问题讨论】:
标签: arrays swift extension-methods swift-playground