'init(start:end:)' устарел: он будет удален в Swift 3. Используйте оператор '..‹'

Я использую следующий код:

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)

После обновления до Xcode 7.3 (Swift 2.2) я получил следующую подсказку:

'init(start:end:)' устарел: он будет удален в Swift 3. Используйте оператор '..‹'.

Для меня непонятно, как это правильно "перевести" с помощью "использования оператора '..‹'.


person mahega    schedule 22.03.2016    source источник
comment
для элемента в 0 ..‹ элементов { } для элемента в 0 ... 100 { }   -  person Anton    schedule 22.03.2016
comment
stackoverflow.com/a/30094120/2303865   -  person Leo Dabus    schedule 07.04.2016


Ответы (6)


Вы должны просто написать

var continousDigitsRange1:Range<Int> = 0..<0

или если вы хотите пойти еще проще

var continousDigitsRange = 0..<0
person Scott Thompson    schedule 22.03.2016

Также стоит отметить, что для substringWithRange строки теперь можно использовать

let theString = "Hello, how are you"
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
theString.substringWithRange(range)
person bmichotte    schedule 22.03.2016
comment
Одна небольшая вещь заключается в том, что если вы считаете с конца строки, используйте endIndex вместо start, как показано ниже: 'let range = theString.startIndex.advancedBy(start) ..‹ theString.endIndex.advancedBy(end)' - person Hamid; 25.04.2016

Оператор замкнутого диапазона (a...b) определяет диапазон от a до b и включает значения a и b. Значение a не должно быть больше, чем b.

Оператор полуоткрытого диапазона (a..<b) определяет диапазон от a до b, но не включает b. Говорят, что он полуоткрыт, потому что он содержит свое первое значение, но не его конечное значение. Как и в случае с оператором закрытого диапазона, значение a не должно превышать b. Если значение a равно b, то результирующий диапазон будет пустым.

Язык программирования Swift (Swift 2.2) — основные операторы

var continousDigitsRange:Range<Int> = Range<Int>(start: 0, end: 0)
--to--
var continousDigitsRange:Range<Int> = 0..<0
person solenoid    schedule 22.03.2016
comment
Ааа, да, хорошая мысль, переключил - хотел проиллюстрировать параметры диапазона в Swift. - person solenoid; 22.03.2016
comment
Что заканчивается в ContinuousDigitsRange? Мне кажется ноль. Как можно использовать этот диапазон? Я тоже пытаюсь учиться! - person user462990; 05.04.2016

чтобы показать ответ bmichotte полностью...

let theString = "Hello, how are you today my friend"
    let start = 3
    let end = 15
    let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
    let p = theString.substringWithRange(range)
    print("this is the middle bit>\(p)<")

это производит это средний бит> вот, как ‹

person user462990    schedule 05.04.2016

Добавление некоторых моментов со ссылкой на swift 3.0

//Пример счетного диапазона.

let range1 = 0..<5

Пример исчисляемого замкнутого диапазона

let range2 = 0...5

//Диапазон от границ

let range = Range(uncheckedBounds: (range1.lowerBound,range1.upperBound))

//Чтобы получить расстояние от substringRange.

let str = "Hello, how are you"
let substringRange = str.characters.indices

// Ниже Swift 3.0

let length = substringRange.distance(from: substringRange.startIndex, to: substringRange.endIndex)

//Для Swift 3.0

let length2 = str.distance(from: substringRange.startIndex, to: substringRange.endIndex)
person user3608500    schedule 20.06.2016

У меня всегда была функция для получения диапазона подстроки строки. Вот моя обновленная функция для Swift 3:

func getSubStringRange(fullString: String, fromIndex: Int, subStringSize: Int) -> Range<String.Index> {
    let startIndex = fullString.characters.index(fullString.startIndex, offsetBy: fromIndex)
    let endIndex = fullString.characters.index(startIndex, offsetBy: subStringSize)

    let subStringRange = startIndex..<endIndex

    return subStringRange
}

Функция довольно понятна — вы передаете строку (fullString), индекс этой строки, с которой начинается подстрока (fromIndex), и размер подстроки (subStringSize).

Пример:

let greeting = "Hi, my name is Nathaniel"
let getName = greeting[getSubStringRange(fullString: greeting, fromIndex: 15, subStringSize: 9)]

print("Name: \(getName)")

-> Печатает: «Имя: Натаниэль»

person Krivvenz    schedule 22.06.2016
comment
Не компилируется со Swift 3. Нет закрытия ) после subStringSize: Int - person Vladislav; 30.09.2016
comment
В свойстве endIndex вы пропустили fullString. перед startIndex, поэтому правильно будет: let endIndex = fullString.characters.index(fullString.startIndex, offsetBy: subStringSize) - person Mette; 01.10.2016
comment
Спасибо ребята. Я, должно быть, спал, когда писал это! Мне пришлось вручную набирать всю партию, а не копировать / вставлять прямо из моего кода, поскольку я был на ПК с Windows при публикации! - person Krivvenz; 02.10.2016