#ios #swift
#iOS #swift
Вопрос:
У меня есть массив ClosedRange
Double
s следующим образом:
var ranges = [ClosedRange<Double>]()
Есть ли быстрый способ получить среднее значение каждого ClosedRange
из них без необходимости перебирать каждый элемент в массиве, а затем каждое число в каждом ClosedRange
?
Например, если массив:
[ClosedRange(1...3), ClosedRange(4...5)]
Я хотел бы получить: 2, 4.5
Комментарии:
1. Что вы подразумеваете под «каждым числом в закрытом диапазоне»? Вам просто нужны верхняя и нижняя границы.
Ответ №1:
Вам просто нужно принудительно удвоить нижнюю и верхнюю границы, суммировать их, а затем разделить на два:
let ranges = [1...3, 4...5]
let avgs = ranges.map {
(Double($0.lowerBound) Double($0.upperBound)) / 2
}
print(avgs) // "[2.0, 4.5]n"
Если границы вашего диапазона уже удваиваются:
let ranges = [1.0...3.0, 4.0...5.0]
let avgs = ranges.map {
($0.lowerBound $0.upperBound) / 2
}
print(avgs) // "[2.0, 4.5]n"