В 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.
- Справа вы создаете кортеж, в котором исходные переменные хранятся в обратном порядке.
Спасибо за прочтение. Приятного кодирования!