0
我有兩個類似的功能,以獲得迅速串的子(我只需要一個):如何在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
S和end
S或end
S中的小於start
秒。爲了學習,讓我們假設有一個很好的理由讓函數中的無意義參數。
我已經嘗試了一些東西,比如:
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]
}
但這些要麼不工作或導致我的應用程序凍結。