#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:) изменяет массив на месте, где ваша функция создает изменяемую копию и изменяет ее.)