var firstArray = ["1.","2.","3.","4."]
var secondArray = ["a","b","c"]
func combineTheArrays(array1: [Any], array2: [Any]) -> [Any] {
var finalArray = [Any]()
let maxIndex = array1.count >= array2.count ? array1.count : array2.count;
for i in 0...maxIndex{
if (array1.count > i){
finalArray.append(array1[i])
}
if (array2.count > i){
finalArray.append(array2[i])
}
} }
combineTheArrays(array1: firstArray, array2: secondArray)
print(finalArray)
Я пытаюсь взять два массива с разными/похожими типами и работать с ними через функцию и объединить в один массив. Идеальным результатом этой функции является печать:
finalArray = ["1.", "a", "2.", "b", "3.", "c", "4."]
Вы очень близко! Вам просто нужно вернуть finalArray
в конце определения функции, а затем назначить результат вызова функции, чтобы вы могли использовать его (например, при вызове print
):
let finalArray = combineTheArrays(array1: firstArray, array2: secondArray)
print(finalArray)
Вы также должны использовать generics, чтобы гарантировать, что вы можете обрабатывать любые элементы, если их типы одинаковы. В отличие от возвращаемого Any
, ваш результат будет массивом того же типа, который будет более безопасным и простым в работе. Вот как я хотел бы улучшить этот код:
func combineTheArrays<T>(array1: [T], array2: [T]) -> [T] {
let maxIndex = max(array1.count, array2.count);
var finalArray = [T]()
finalArray.reserveCapacity(array1.count + array2.count)
for i in 0..<maxIndex {
if i < array1.count { finalArray.append(array1[i]) }
if i < array2.count { finalArray.append(array2[i]) }
}
return finalArray
}
var firstArray = ["1.","2.","3.","4."]
var secondArray = ["a","b","c"]
let finalArray = combineTheArrays(array1: firstArray, array2: secondArray)
print(finalArray)