Как я понимаю, в Swift ArraySlice
хранит ссылку на Array
, из которого он был изготовлен. Как я могу получить доступ к элементам этого массива за пределами границ среза?Как получить доступ к элементам ArraySlice для родительских элементов?
Например, это ArraySlice
есть свойство «родитель», что бы сделать следующий код для печати «А»:
func getSlicePrologue(_ slice: ArraySlice<String>) -> String {
return slice.parent[0]
}
func main() {
let array = ["A", "B", "C"]
let slice = array[1...2]
print(getSlicePrologue(slice))
}
main()
Если нет, то есть ли рекомендуемый способ - кроме отслеживания Array
явно ? Или есть какая-то структура данных, более подходящая, чем Array
?
Я изменил код примера, чтобы сделать более очевидным, что родительский массив не должен быть напрямую доступен. –
Но так как 'getSlicePrologue' является чистой фантазией и никогда не может быть на самом деле написан, этот пример не волшебным образом стал более привлекательным. Если вы хотите, чтобы другая функция имела доступ к 'array [0]', вы передадите ей 'array', а не' slice'. – matt
Говорить, что моя фантазия невозможна, и почему, приветствуется; говоря, как делать то, что я специально хочу избежать, с другой стороны, просто добавляет шум в разговор. Фантазии _can_ быть написаны - вы читали мои выше. Я ожидаю, что более точное представление об этом может помочь уменьшить шум от осторожных читателей. –