Я пытаюсь написать расширение для Array на игровой площадке Xcode. Я хочу написать функцию, которая будет изменять массив, чтобы он был заполнен 0s при вызове функции. Код, который я пытаюсь использовать это:Расширение массива, неоднозначная ссылка на индекс участника '
import Foundation
extension Array {
mutating func zero() {
for i in 0..<self.count {
self[i] = 0 // ERROR - Ambiguous reference to member 'subscript'
}
}
}
Этот код не работает из-за ошибки при:
self[i] = 0
Однако, если я пытаюсь «получить» значение от себя , У меня нет проблем. Например:
import Foundation
extension Array {
mutating func zero() {
for i in 0..<self.count {
print(self[i])
}
}
}
не имеет ошибок и работает должным образом.
Так что мой вопрос: Почему я не могу изменить массив?
Кроме того, замена:
self[i] = 0
с,
self.append(0)
также приводит к ошибке. (Невозможно вызывать «append» с списком аргументов типа «(Int)»)
Так что это не позволит мне модифицировать себя вообще, как кажется.
Или 'where Element: IntegerLiteralConvertible', чтобы сделать его несколько более универсальным (для массивов целых чисел или значений с плавающей запятой). –
Спасибо, @MartinR, сделал это изменение! – Gavin
Спасибо Гэвин и @ Мартин R! Это исправляет ошибку. Мне придется углубиться в эту тему немного позже, позже сегодня. – OhNo