удалите номер индекса из массива

#arrays #swift

Вопрос:

У меня есть этот код, и задача состоит в том, чтобы написать функцию, которая удалит тот же номер индекса в параметре функции

 func deleteElementInArray(arr: [Int], index: Int) -> [Int] {

    var inde = index
    var array = arra[inde]
    var result = array.remove(at: inde) // I got error here Value of type 'Int' has 
                                           //no member 'remove'
    return result
 

}

пример вывода

arr [-3 , 4 , 0]

индекс 0

вывод [4 , 0]

Ответ №1:

Вы вызываете remove функцию по Int значению в данном индексе, а не по массиву:

 func deleteElementInArray(arr: [Int], index: Int) -> [Int] {
    // make a mutable copy of the array
    var array = arr
    // remove the item at given index
    array.remove(at: index)
    // return the array  
    return array
}
 

Комментарии:

1. Спасибо, теперь это работает

2. @SamiAlotaibi убедитесь, что ваш массив содержит элемент с определенным индексом, прежде чем пытаться удалить его. Проверьте сообщение Дункана ниже.

Ответ №2:

     var array = arra[inde]
    var result = array.remove(at: inde) // I got error here Value of type 'Int' has 
 

Компилятор описал проблему. Int-это стандартный тип данных. массиву присваивается значение Int, в котором нет элемента с именем remove. Вы, вероятно, пытаетесь определить

 var array:[Int] = [2, 3, 5, 7, 11, 13, 17]
 
array.remove(at: 3)

 

Вы пытаетесь сделать — array=arra

Обратите внимание на разницу между массивом Int и Int.

Ответ №3:

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

Вы можете использовать то же имя для локального var, которое вы используете для входного параметра. Это работает, потому что новая переменная определена в другой области. Добавление проверки на ошибку, чтобы вы не вышли из строя, если вызовете ее с неверным индексом массива, ваша функция может быть переписана следующим образом:

 func deleteElementInArray(array: [Int], index: Int) -> [Int] {
    var array = array
    if array.indices.contains(index) {
        array.remove(at: index)
    }
    return array
}
 

Обратите внимание, что Array функция remove(at:) уже выполняет то, что вы хотите (исключая проверку ошибок). Хорошо, `remove(at:) изменяет массив на месте, где ваша функция создает изменяемую копию и изменяет ее.)