首页 > 解决方案 > 使用下标时出错(下标(_:)' 不可用:)

问题描述

我收到 2 个下标语法错误

第一个错误是:

'subscript(_:)' 不可用:不能用整数范围为 String 下标,请改用 String.Index 范围。

第二个错误是:

对泛型类型“Range”的引用需要 <...> 中的参数

extension String {

var length: Int {
    return self.count
}

subscript (i: Int) -> String {
    return self[i ..< i + 1]. //error1 
}

subscript (r: Range) -> String {. //error2
    let range = Range(uncheckedBounds: (lower: max(0, min(length, r.lowerBound)),
                                        upper: min(length, max(0, r.upperBound))))
    let start = index(startIndex, offsetBy: range.lowerBound)
    let end = index(start, offsetBy: range.upperBound - range.lowerBound)
    return String(self[start ..< end])
}
}
var sa : String = "hello"
sa[2] // l
sa[0..<4] // hell. //error1

是不是因为代码是用swift 3写的?

标签: swift

解决方案


推荐阅读