Присвоение элементов кортежа переменным напрямую с помощью деструктуризации

В Swift деструктуризация означает разделение кортежа на несколько переменных с помощью одного присваивания.

Вот как выглядит синтаксис деструктуризации кортежа:

var (val1, val2, val3) = threeValues

Где:

  • выбор1, val2и val3 являются переменными, в которых хранятся значения кортежа.
  • три значения представляет собой кортеж из трех значений.

Например, давайте создадим функцию, которая возвращает кортеж:

func getInfo() -> (name: String, email: String) {
     return (name: "Matt", email: "matt@example.com")
}

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

let info = getInfo()

print(info.name) // prints "Matt"
print(info.email) // prints "matt@example.com"

Но вы можете сделать это с помощью одной строки, используя деструктуризацию кортежа:

let (name, email) = getInfo()

print(name) // prints "Matt"
print(email) // prints "matt@example.com"

Еще один полезный пример: вы можете использовать деструктуризацию кортежа для выбора значений в цикле for.

Например:

let list = (("Alice", 1), ("Bob", 2), ("Charlie", 3))

for (name, position) in list {
    print("\(position): \(name)")
}

Выход:

1: Alice
2: Bob
3: Charlie

Если у вас есть кортеж со значением, которое вас не интересует, вы можете использовать оператор подчеркивания в качестве переменной отклонения.

Например, имея список кортежей, где каждый кортеж имеет имя и номер, мы можем игнорировать это число, деструктурируя его в переменную. _:

let list = (("Alice", 1), ("Bob", 2), ("Charlie", 3))

for (name, _) in list {
    print(name)
}

Выход:

Alice
Bob
Charlie

Чтобы узнать больше об операторе подчеркивания в Swift, прочтите эту статью.

Далее давайте посмотрим, как применить деструктуризацию кортежа к классическому вопросу собеседования по программированию.

Как поменять местами две переменные без третьей в Swift?

Вы можете использовать деструктуризацию кортежа, чтобы поменять местами две переменные без третьей вспомогательной переменной:

var a = 1
var b = 2

(a, b) = (b, a) // Now b = 2 and a = 1
Иллюстрация деструктуризации с заменой двух переменных

Этот фрагмент кода работает так, что:

  • Слева вы разбиваете кортеж на переменные a и b.
  • Справа вы создаете кортеж, в котором исходные переменные хранятся в обратном порядке.

Спасибо за прочтение. Приятного кодирования!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *