2017-01-02 17 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]'にアクセスできるようにするには、 'slice'ではなく' array'を渡します。 – matt

+0

私のファンタジーは不可能だと言って、なぜ、歓迎ですか。私が特に避けたいと思うようなことをする方法を言っているのは、会話にノイズを加えるだけです。ファンタジーは書かれているかもしれない - あなたは私の上記を読んだ。私はそれをより正確に表現すれば、慎重な読者の騒音を減らすのに役立つだろうと期待しています。 –

答えて

1

スライスの全体は、配列上の限られたウィンドウであるということです。スライスを使用して、スライスの外側にある配列のインデックスにアクセスすることについては、矛盾しています。あなたの例では:

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

... arrayのゼロ要素にアクセスする方法は、array[0]です。

関連する問題