Свифт 2
let gap = CGFloat(randomInRange(StackGapMinWidth...maxGap))
Отсутствует метка аргумента "диапазон:" в вызове
Swift 3 - новая ошибка
let gap = CGFloat(randomInRange(range: StackGapMinWidth...maxGap))
Никакие кандидаты "..." не дают ожидаемого типа контекстуального результата "Диапазон".
Перегрузки для '...' существуют со следующими типами результатов: ClosedRange, CountableClosedRange.
Ответ 1 · рейтинг 7 · Martin R
Начиная со Swift 3, ..< и ... создают разные диапазоны:
..< создает Range (или CountableRange, в зависимости от базового типа), который описывает полуоткрытый диапазон, не включающий верхнюю границу.
... производит ClosedRange (или CountableClosedRange), который описывает закрытый диапазон, включающий верхнюю границу.
Если randomInRange() вычисляет случайное число в заданном диапазоне, включая верхнюю границу, то оно должно быть определено как
func randomInRange(range: ClosedRange<Int>) -> Int {
// ...
}
и вы можете назвать это как
let lo = 1
let hi = 10
let r = randomInRange(range: lo ... hi)