Есть ли способ мгновенно генерировать массив, заполненный диапазоном значений в Swift?

Например, в python я мог бы что-то сказать по строкам

arr = range(0,30) 

и получить массив с указанными элементами. Я подозреваю, что что-то подобное возможно с индексом в Swift, но после очистки документации и Apple iBook я не могу найти решение "с батарейками" для создания указанного массива.

Это что-то, что я должен был бы написать для кода вручную, или есть ли для него предварительно написанный метод?

Ответы

Ответ 1

Вы можете создать массив с таким диапазоном:

var values = Array(0...100)

Это даст вам массив [0, ..., 100]

Ответ 2

Вы можете создать диапазон и преобразовать его в массив:

var array = (0...30).map { $0 }

Закрытие map просто возвращает элемент диапазона, в результате чего массив, элементы которого являются целыми числами, включенными в диапазон. Конечно, возможно генерировать разные элементы и типы, например:

var array = (0...30).map { "Index\($0)" }

который генерирует массив строк Index0, Index1 и т.д.

Ответ 3

Вы можете использовать это для создания массива, содержащего такое же значение

let array = Array(count: 5, repeatedValue: 10)

Или, если вы хотите создать массив из диапазона, вы можете сделать это следующим образом:

let array = [Int](1...10)

В этом случае вы получите массив, содержащий значения Int от 1 до 10

Ответ 4

создать массив Int от 0 до N-1

var arr = [Int](0..<N)

создать массив Float от 0 до N-1

var arr = (0..<N).map{ Float($0) }

создать массив с плавающей точкой от 0 до 2π, включая шаг 2π 0,1

var arr:[Float] = stride(from: 0.0, to: .pi * 2 + 0.1, by: 0.1).map{$0}
or
var arr:[Float] = Array(stride(from: 0.0, to: .pi * 2 + 0.1, by: 0.1))