Я борюсь с одним из изменений Swift3. Раньше они обрабатывали ...
и ..<
как Range
, но теперь у них есть тонна новых «поддиапазонов». Я хотел бы иметь функцию, использующую оба варианта диапазона.Диапазоны в Swift3
struct Test {
var data = [1,2,3,4,5]
subscript(r:Range<Int>) -> [Int] {
return Array(data[r])
}
}
let t = Test()
print(t[0...1]) // fails because now this is a ClosedRange
print(t[0..<2])
Я хотел бы иметь
subscript(r:TakesAnyRange<Int>) -> [Int] {
Это может быть то, что вы ищете: http://stackoverflow.com/a/40377303/1187415. –
@MartinR Точно :-) Мне это нравится, когда разработчики компилятора заменяют простую конструкцию тем, кому нужна хотя бы степень доктора>: - | –
@MartinR Теперь, поскольку это упрощенный вопрос, я обнаружил, что для «индекса» ваше решение не работает. У вас есть другой указатель? –