"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. Используйте '.. < Оператор.

Мне не ясно, как правильно "перевести" его с помощью ".. < Оператор.

Ответ 1

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

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

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

var continousDigitsRange = 0..<0

Ответ 2

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

let theString = "Hello, how are you"
let range = theString.startIndex.advancedBy(start) ..< theString.startIndex.advancedBy(end)
theString.substringWithRange(range)

Ответ 3

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

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

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

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

Ответ 4

чтобы показать ответ 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)<")

это означает, что это средний бит > lo, как <

Ответ 5

Добавление некоторых точек со ссылкой на 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)

Ответ 6

У меня всегда была функция, чтобы получить диапазон подстроки строки. Вот моя обновленная функция для 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) и насколько велик subString (subStringSize).

Пример:

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

print("Name: \(getName)")

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