Видеокурсы по изучению языка программирования Swift. Подробнее

Сабскрипты в расширениях

Если вы нашли опечатку в тексте, выделите ее и нажмите CTRL + ENTER.

Расширения могут добавить новые сабскрипты к существующему типу. Этот пример добавляет сабскрипт целого числа во встроенный тип Int языка Swift. Этот сабскрипт [n] возвращает цифру, которая стоит на n позиции справа:

  • 123456789[0] возвращает 9
  • 123456789[1] возвращает 8

и так далее:

extension Int {
    subscript(digitIndex: Int) -> Int {
        var decimalBase = 1
        for _ in 0..<digitIndex {
            decimalBase *= 10
        }
        return (self / decimalBase) % 10
    }
}
746381295[0]
// возвращает 5
746381295[1]
// возвращает 9
746381295[2]
// возвращает 2
746381295[8]
// возвращает 7

Если значение Int не имеет достаточно количество цифр для требуемого индекса, то сабскрипт возвращает 0, как если бы вместо этого числа стоял 0:

746381295[9]
// возвращает 0, как если бы вы запросили вот так:
0746381295[9]
Swift: 
3.0