Так что я хотел вставить объекты массива в другой массив. Swift массивы, кажется, отсутствует эквивалентный метод для - (void)insertObjects:(NSArray *)objects atIndexes:(NSIndexSet *)indexes
, но все хорошо, потому что мы можем использовать следующий синтаксис:Вставка массива в массив
var array = [0,4,5]
array[1..<1] = [1,2,3] // array = [0,1,2,3,4,5]
Все это хорошо? Не совсем! Ниже дает ошибку во время компиляции («[Int] не конвертируется в Int»):
var array = [0,4,5]
var array2 = [1,2,3]
array[1..<1] = array2
Есть ли вменяемое объяснение этому?
Edit:
Хорошо, следующие работы (спасибо Greg):
array[1..<1] = array2[0..<array2.count]
Как это:
let slice = array2[0..<array2.count]
array[1..<1] = slice
Но сейчас я совершенно запутался, как это работает , Объяснение Gregs, которое я пытался вставить в array2
в array
, имеет смысл, но я не вижу разницы только в использовании литерала массива, а также почему он работает с срезом (который, кажется, является недокументированной деталью реализации?).
фрагмент Соответствует ArrayLiteralConvertible протоколу, поэтому 'массив [1 .. <1] = [1,2,3]' работы. Но нет автоматического преобразования из массива в Slice или наоборот. –