【发布时间】:2018-06-23 00:31:27
【问题描述】:
错误:无法使用“(安全:Int)”类型的索引为“[CustomClass]”类型的值下标
class CustomClass {
let value: String
init(value: String) {
self.value = value
}
}
extension Collection {
subscript(safe: Int) -> Element? {
if safe > count-1 {
return nil
}
return self[safe]
}
}
let steps: [CustomClass] = []
if let step = steps[safe: 4] { // error here
}
为什么会这样?
【问题讨论】:
-
见stackoverflow.com/questions/25329186/…。我认为参数 nam 可能存在问题,因为 'safe' 在某些情况下是关键字。
-
默认情况下下标不会自动获取与参数名称等效的参数标签;您需要明确说明它们,例如
subscript(safe safe: Int) -> Element?,或者更好的是subscript(safe index: Int) -> Element?(如 Q&A Sulthan 链接中所示),因为safe不是局部变量的好名称。