Ну, я бы просто создал subscript
для Array
с другой меткой аргумента
extension Array {
subscript(nth nthIndex: Int) -> Element {
get {
return self[nthIndex - 1]
}
set(newValue) {
self[nthIndex - 1] = newValue
}
}
}
Использование:
let array = ["first", "second", "third"]
print(array[nth: 1])
first
В качестве альтернативы вы можете использовать это решение для взлома, которое принимает массив Int
в качестве параметра
extension Array {
subscript(index: [Int]) -> Element {
get {
guard index.count == 1, let index = index.first else { fatalError("Fatal error: You have to pass exactly one index") }
return self[index - 1]
}
set(newValue) {
guard index.count == 1, let index = index.first else { fatalError("Fatal error: You have to pass exactly one index") }
self[index - 1] = newValue
}
}
}
Использование:
let array = ["first", "second", "third"]
print(array[[1]])
first