2017-01-02 59 views
-1

据我了解,在Swift中,ArraySlice保留对它制作的Array的引用。我怎样才能访问超出切片边界的数组元素?如何访问ArraySlice的父数组的元素?

举例来说,确实ArraySlice有一些“父母”的属性,会使下面的代码打印“A”:

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更合适的数据结构呢?

+0

我修改了示例代码,使其更加明显,父数组不应该直接访问。 –

+0

但是由于'getSlicePrologue'纯属幻想,永远无法写出,所以这个例子并没有神奇地变得更具吸引力。如果你想让另一个函数能够访问'array [0]',你就会传递'array',而不是'slice'。 – matt

+0

说我的幻想是不可能的,为什么,是值得欢迎的;另一方面,如何按照我特别想避免的方式来做事情,只是增加了对话的噪音。幻想_可以写 - 你确实读过我的。我希望更准确地表达它可能有助于减少仔细读者的噪音。 –

回答

1

切片的整个是它是阵列上有限的窗口。说到使用切片来访问切片外的数组索引是一个矛盾的术语。在您的例子:

let array = ["A", "B", "C"] 
let slice = array[1...2] 

...的方式来访问的array零元素是array[0]