2015-11-12 2 views
2

Есть ли разница между следующим?Confused about Swift Array Declarations

  1. var array1_OfStrings = [String]()

  2. var array2_OfStrings: [String] = []

  3. var array3_OfStrings: [String]

Тестирование в Playground показывает, что 1 и 2 являются одинаковыми, но 3 ведет себя по-разному. Может кто-нибудь объяснить мне разницу, пожалуйста? А также каким будет предпочтительный способ объявить пустой массив String?

+1

третий - это нуль, а 1-й и 2-й - пустые массивы – ogres

ответ

3

Первые два имеют такой же эффект.

  1. Объявление переменной array1_OfStrings, позвольте выбрать сам тип. Когда он видит [String](), он ловко знает, что это тип массива строк.

  2. Вы можете установить переменную array2_OfStrings как тип массива строки, то вы говорите, что пусто от []

  3. Это отличается, потому что вы просто сказать, вы хотите array3_OfStrings быть массив типа строки, но не дали это начальное значение.

Я думаю, что первый рекомендуется, поскольку The Swift Programming Language использует его чаще.

1

Хотя я могу опаздывать на вечеринку, есть одна вещь, которую нужно сказать.

Первый вариант установить array1_OfStrings на массив строк

Другой вариант говорит, что array1_OfStrings является массив строк, а затем установить его пустым.

Хотя это может быть очень небольшая разница, вы заметите это при компиляции. Для первого варианта компилятор автоматически попытается выяснить, что такое тип array1_OfStrings. Второй вариант этого не сделает, вы дадите компилятору понять, что на самом деле это массив строк и сделано.

Почему это важно? Взгляните на следующую ссылку: https://thatthinginswift.com/debug-long-compile-times-swift/

Как вы можете видеть, если вы не объявляете тип своей переменной, которая может повлиять на производительность сборки LOT.