分配枚举器,它与变量相反

时间:2014-10-15 06:28:03

标签: ios swift

我遇到了这个问题......我想在一个常规的for循环中枚举一个条件,反之则另一个条件。像这样:

var enumerator = 0..<length
if(stringPosition == .End) {
    enumerator = reverse(enumerator) //[C.Generator.Element] is not convertible to 'Range<Int>'
}
for index in enumerator {
    //do stuff
}

我在那里得到了一个不可兑换的错误,并且无法弄清楚如何继续这样做。我尝试过不同的类型转换术,但这种做法并不起作用。

我应该如何理清那里的转换?

1 个答案:

答案 0 :(得分:1)

只需转换为Array即可。

var enumerator = Array(0..<length) // <-- here
if(stringPosition == .End) {
    enumerator = reverse(enumerator)
    // then, enumerator.reverse() is better, I think
}
for index in enumerator {
    //do stuff
}

我认为,更多(记忆)效率的方式就像:

let range = lazy(0..<length)
let enumerator = stringPosition == .End ? SequenceOf(range.reverse()) : SequenceOf(range)
for index in enumerator {
    //do stuff
}
  • SequenceOf是任何SequenceType的包装器。您可以使用它将不同的序列类型存储到一个变量中。
  • 代表lazy(),请参阅this answerthis