У меня есть две аналогичные функции, чтобы получить подстроку строки в стриж (нужно только один):Как правильно защитить функцию подстроки в Swift 3?
func substring(start: Int, end: Int) -> String {
let c = self.characters
let r = c.index(c.startIndex, offsetBy: start)..<c.index(c.startIndex, offsetBy: end)
let substring = self[r]
return substring
}
и:
func substring(start: Int, end: Int) -> String {
let startIndex = self.index(self.startIndex, offsetBy: start)
let endIndex = self.index(self.startIndex, offsetBy: end)
return self[startIndex..<endIndex]
}
Как правильно охранять это? Вот главная ошибка, я могу получить здесь:
fatal error: cannot decrement before startIndex
Мне нужно, чтобы иметь возможность отправлять во всех типах плохих значений в этой функции, такие как отрицательные start
с и end
с или end
ы, которые меньше start
s. В целях обучения давайте предположим, что есть веская причина допускать бессмысленные параметры в функции.
Я попробовал несколько вещей, как:
func substring(start: Int, end: Int) -> String {
guard end > 0 else {
return "something"
}
let startIndex = self.index(self.startIndex, offsetBy: start)
let endIndex = self.index(self.startIndex, offsetBy: end)
return self[startIndex..<endIndex]
}
, но они либо не работают, или вызвать мое приложение заморозить.