Array
из Swift обладает свойством взаимозаменяемости с классом NSArray
из Foundation.
Array
в Swift является намного более мощным классом и скорее схож с векторами в указанных языках: он сам регулирует свой размер, имеет простые методы для добавления элементов и позволяет создавать свой динамический вариант в многомерном виде.
Array<Element>
, где Element
- это тип значений, которые разрешено хранить массиву. Вы также же можете написать тип массива в сокращённой форме в качестве [Element]
. И хотя обе формы функционально идентичны, но сокращённая форма предпочтительнее и используется в течение этого руководства при описании массивов.
var someInts = [Int]()
print("someInts имеет тип [Int].")
// Выведет "someInts имеет тип [Int]."
someInts
выведен в [Int]
из типа его конструктора.
someInts.append(3)
. Не стоит пугаться: массивы в Swift являются типом, а потому имеют свои свойства и методы, что будет описано в дальнейших главах. Здесь же скажем, что метод - это функция, вызываемая на объекте. Записывается это через точечную нотацию - сперва пишется имя сущности, на которой происходит вызов, затем точка, а в конце концов имя метода. Это верно и для свойств - связанных с объектом величин.
var someInts = [Int]()
someInts.append(3)
// someInts теперь содержит значение 3 типа Int
someInts = []
// someInts теперь пустой массив, но всё ещё остаётся типом [Int]
Array
в Swift также предоставляет конструктор для создания массива указанного размера, все элементы которого заданы в одно и то же значение по-умолчанию. Вы передаёте в этот конструктор значение по-умолчанию подходящего типа (называемое repeating): и число раз, сколько данное значение будет повторено(называемое count):
var threeDoubles = Array(repeating: 0.0, count: 3)
// threeDoubles имеет тип [Double] и равен [0.0, 0.0, 0.0]
var threeDoubles = Array(repeating: 0.0, count: 3)
var anotherThreeDoubles = Array(repeating: 2.5, count: 3)
// anotherThreeDoubles имеет тип [Double] и равен [2.5, 2.5, 2.5]
var sixDpubles = threeDoubles + anotherThreeDoubles
// sixDpubles выведен как [Double] и равен [0.0, 0.0, 0.0, 2.5, 2.5, 2.5]
var shoppingList: [String] = ["Спаржа", "Креветки"]
// shoppingList был создан с двумя изначальными значениями
Переменная shoppingList
объявлена как "массив строковых значений" и записывается как [String]
. Так как этот конкретный массив был явно задан типом String
, то ему разрешено хранить только элементы типа String
. Здесь массив shoppingList
инициализирован двумя строками ("Спаржа" и "Креветки") и записан с помощью литерала массива.
shoppingList
объявлен в качестве переменной, а не константы, так как больше элементов может быть добавлено в лист покупок в примерах ниже.
String
и ничего больше. Это совпадает с типом объявления переменной shoppingList
(массив, который может содержать только элементы типа String
), так что присваивание массива-литерала разрешено как способ инициализации shoppingList
двумя изначальными элементами.
shoppingList
может быть записана в сокращённой форме вместо обычного синтаксиса:
var shoppingList = ["Спаржа", "Креветки"]
Так как все значения в литерале массива одного типа, то Swift может вывести, что [String]
- это корректный тип для использования в переменной shoppingList
.