1 post tagged

subscript

Сабскрипт

Сабскрипт – это сокращенный способ получить доступ к елементам коллекции, например array[0], где [0] – это сабскрипт. В свифте есть возможность писать свои сабскрипты и это круто, если бы мы писали гру шахматы, то было бы удобно оперировать доской как двумерной матрицей и задавать ходы в таком виде:

board[move: (4,5)] = (2,3)

Еще удобно, в случае когда индекс выходит за пределы массива, выводить ошибку, для этого можно сделать простенький сабскрипт:

struct Board {
    var positions = [[Position]]()
    
    subscript(x row: Int, y column: Int) -> Position? {
        get {
            if row < positions.count {
                if column < positions[row].count {
                    return positions[row][column]
                }
            }
            print("Range error")
            return nil
        }
    }
}

И обращаться к нему вот так:

board[x: 0, y:3]

Вместо:

board.positions[0][0]

Также сабскрипты можно использовать в расширениях, этот пример добавляет сабскрипт целого числа во встроеный тип String:

extension String{
    subscript(index: Int) -> Character {
        let _index = startIndex.advancedBy(index)
        return characters[_index]
    }
}

Теперь можно получить символ из строки указав индекс:

"436575"[1]
=> 3
2016   subscript   Swift