В моем проекте есть следующий код:
extension Array {
func unzip<A, B>() -> ([A], [B]) where Element == (A, B) {
reduce(into: ([], [])) {
$0.0.append($1.0)
$0.1.append($1.1)
}
}
}
Он компилируется и работает именно так, как я бы хотел - любой экземпляр массива кортежей можно «разархивировать» на два массива типы, которые соответствуют первому и второму элементам кортежа.
Но по соображениям стиля я бы предпочел, чтобы это было вычисляемым свойством, а не функцией, чтобы оно выполнялось как tupleArray.unzipped
вместо tupleArray.unzip()
. Как мне это сделать?