A slice stores a base collection and the start and end indices of the view. It does not copy the elements from the collection into separate storage. Thus, creating a slice has O(1) complexity.
あるスライス(切り取り)は、基盤コレクションおよびビューの始まりと終わりのインデックスを格納します。それは、要素をそのコレクションから別個のストレージへとコピーしません。したがって、ある切り取り(スライス)の作成はO(1)の計算量を持ちます。
Slices Share Indices
スライスはインデックスを共有します
Indices of a slice can be used interchangeably with indices of the base collection. An element of a slice is located under the same index in the slice and in the base collection, as long as neither the collection nor the slice has been mutated since the slice was created.
あるスライスのインデックスは、基盤コレクションのインデックスと交換可能に使われることができます。スライスの要素は、スライスにおいてそして基盤コレクションにおいて同じインデックス下に位置します、コレクションもスライスもスライスが作成されてから変化させられない限りは。
For example, suppose you have an array holding the number of absences from each class during a session.
例えば、あなたがある学期(2学期制)の各クラスの欠席者数が入った配列を持つと考えてください。
You’re tasked with finding the day with the most absences in the second half of the session. To find the index of the day in question, follow these steps:
あなたはこの学期の後半において最も多く欠席者がいる日付を見つける任務を負います。質問の日付のインデックスを見つけるには、これらの手順に従ってください:
Create a slice of the absences array that holds the second half of the days.
学期後半の日付を保持する、absences配列のスライスを作成してください。
Use the max(by:) method to determine the index of the day with the most absences.max(by:)メソッドを使って最も欠席者の多い日付のインデックスを判定してください。
Print the result using the index found in step 2 on the original absences array.
手順2で見つけたインデックスをオリジナルabsences配列上で使って結果を出力してください。
Here’s an implementation of those steps:
ここにこれらの手順の実装があります:
Slices Inherit Semantics
スライスは意味論を継承します
A slice inherits the value or reference semantics of its base collection. That is, if a Slice instance is wrapped around a mutable collection that has value semantics, such as an array, mutating the original collection would trigger a copy of that collection, and not affect the base collection stored inside of the slice.
スライスは、それの基盤コレクションのもつ値意味論もしくは参照意味論を継承します。すなわち、Sliceインスタンスが値意味論を持つ可変コレクション、例えば配列などの周りにラップされる場合、オリジナルのコレクションを変化させることはそのコレクションのコピーを誘発します、それでスライス内部に格納される基盤コレクションには影響を及ぼしません。
For example, if you update the last element of the absences array from 0 to 2, the secondHalf slice is unchanged.
例えば、あなたがabsences配列の最後の要素を0から2に更新する場合、secondHalfスライスは変化していません。
Use slices only for transient computation. A slice may hold a reference to the entire storage of a larger collection, not just to the portion it presents, even after the base collection’s lifetime ends. Long-term storage of a slice may therefore prolong the lifetime of elements that are no longer otherwise accessible, which can erroneously appear to be memory leakage.
スライスを一時的な計算のためだけに使ってください。あるスライスは、単にそれが提示する一部分に対してではなく、より大きなコレクションのストレージ全体への参照を保持します、元のコレクションの寿命が終わった後でさえも。あるスライスの長期ストレージは、もはやそれ以外ではアクセス可能ではない要素の寿命を延長し、それはメモリの漏洩であるように見ることができます。
Creates a view into the given collection that allows access to elements within the specified range.
与えられたコレクションに関するあるビューを作成します、それは指定された範囲の内の要素にアクセスを与えます。
The collection’s “past the end” position—that is, the position one greater than the last valid subscript argument.
コレクションの「終わりを過ぎた」位置—すなわち、最後の有効な添え字引数より1つ大きい位置。
A sequence containing the same elements as this sequence, but on which some operations, such as map and filter, are implemented lazily.
このシーケンスと同じ要素を含んでいるシーケンス、しかしそれの上で何らかの演算、例えばmapやfilterが遅延に実装されます。
Returns an array containing the non-nil results of calling the given transformation with each element of this sequence.
指定された変換をこのシーケンスの各要素で呼び出す結果で非-nilのものを含んでいる配列を返します。
Returns a Boolean value indicating whether the sequence contains an element that satisfies the given predicate.
指定された述部を満足させるある要素をシーケンスが含むかどうかを指し示すブール値を返します。
Returns the difference needed to produce this collection’s ordered elements from the given collection.
このコレクションのもつ順番付けられた要素をこの与えられたコレクションから生成するのに必要とされる差異を返します。
Available when Base.Element conforms to Equatable and Base conforms to BidirectionalCollection.Base.ElementがEquatableに準拠するそしてBaseがBidirectionalCollectionに準拠する時に利用可能です。
Returns the difference needed to produce this collection’s ordered elements from the given collection, using the given predicate as an equivalence test.
このコレクションのもつ順番付けられた要素をこの与えられたコレクションから生成するのに必要とされる差異を返します、与えられた述部を同等性テストとして使います。
Available when Base conforms to BidirectionalCollection.BaseがBidirectionalCollectionに準拠する時に利用可能です。
Returns a subsequence by skipping elements while predicate returns true and returning the remaining elements.predicateがtrueを返す間は要素を飛ばして残りの要素を返すことによって、ある下位シーケンスを返します。
Returns a Boolean value indicating whether this sequence and another sequence contain the same elements in the same order.
このシーケンスともう一方のシーケンスが同じ要素を同じ順序で含むかどうかを指し示すブール値を返します。
Available when Base.Element conforms to Equatable.Base.ElementがEquatableに準拠する時に利用可能です。
Returns a Boolean value indicating whether this sequence and another sequence contain equivalent elements in the same order, using the given predicate as the equivalence test.
このシーケンスともう一方のシーケンスが同等の要素を同じ順序で含むかどうかを、与えられた述部を同等テストとして使って、指し示しているブール値を返します。
Returns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero and x represents an element of the sequence.
ペア (n, x) のシーケンスを返します、そこでnはゼロで開始する連続した数を表して、xはシーケンスの要素を表します。
Returns an array containing the concatenated results of calling the given transformation with each element of this sequence.
指定された変換をこのシーケンスの各要素で呼び出す結果を連結したものを含んでいる配列を返します。
Offsets the given index by the specified distance, or so that it equals the given limiting index.
与えられたインデックスをこの指定された隔たりで補います、またはそれでそれは与えられた限界インデックスと等しくなります。
Returns an index that is the specified distance from the given index, unless that distance is beyond a given limiting index.
与えられたインデックスから指定された隔たりのインデックスを返します、その隔たりが与えられた限界インデックスを越えない限りは。
Available when Base conforms to BidirectionalCollection and RangeReplaceableCollection.BaseがBidirectionalCollectionとRangeReplaceableCollectionに準拠する時に利用可能です。
Available when Base conforms to BidirectionalCollection and RangeReplaceableCollection.BaseがBidirectionalCollectionとRangeReplaceableCollectionに準拠する時に利用可能です。
Returns a lazy sequence that concatenates the elements of this sequence of sequences.
このシーケンスに属する複数のシーケンスの要素を鎖状に連結する遅延シーケンスを返します。
Available when Base.Element conforms to Sequence and Base conforms to LazySequenceProtocol.Base.ElementがSequenceに準拠するそしてBaseがLazySequenceProtocolに準拠する時に利用可能です。
Returns the concatenated elements of this sequence of sequences, inserting the given separator between each element.
各要素の間に与えられた分離子を挿入して、このシーケンスに属する複数のシーケンスの要素を鎖状に連結して返します。
Available when Base.Element conforms to Sequence.Base.ElementがSequenceに準拠する時に利用可能です。
Returns a new string by concatenating the elements of the sequence, adding the given separator between each element.
各要素の間に与えられた分離子を加えて、シーケンスの要素を連結することによる新しい文字列を返します。
Available when Base.Element is String and Base conforms to BidirectionalCollection.Base.ElementがStringであるそしてBaseがBidirectionalCollectionに準拠する時に利用可能です。
Returns a new string by concatenating the elements of the sequence, adding the given separator between each element.
各要素の間に与えられた分離子を加えて、シーケンスの要素を連結することによる新しい文字列を返します。
Available when Base.Element conforms to StringProtocol.Base.ElementがStringProtocolに準拠する時に利用可能です。
Returns the last index where the specified value appears in the collection.
指定された値がコレクションにおいて現れるところの最後のインデックスを返します。
Available when Base.Element conforms to Equatable and Base conforms to BidirectionalCollection.Base.ElementがEquatableに準拠するそしてBaseがBidirectionalCollectionに準拠する時に利用可能です。
Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the less-than operator (<) to compare elements.
そのシーケンスが別のシーケンスの前に来るかどうかを、ある語彙筆記的順序(字典)順序において、より小さい演算子(<)を使って要素を比較して、指し示すブール値を返します。
Available when Base.Element conforms to Comparable.Base.ElementがComparableに準拠する時に利用可能です。
Returns a Boolean value indicating whether the sequence precedes another sequence in a lexicographical (dictionary) ordering, using the given predicate to compare elements.
シーケンスが別のシーケンスの前に来るかどうかをある語彙筆記的順序(字典)順序において、与えられた述部を使って要素を比較して、指し示すブール値を返します。
Returns a LazyMapSequence over this Sequence. The elements of the result are computed lazily, each time they are read, by calling transform function on a base element.
このSequenceを覆うLazyMapSequenceを返します。結果のそれぞれの要素は遅延に計算されます、毎回それらは、基盤となる要素上でtransform関数を呼び出すことによって読み出されます。
Available when Base conforms to LazySequenceProtocol.BaseがLazySequenceProtocolに準拠する場合に利用可能です。
Reorders the elements of the collection such that all the elements that match the given predicate are after all the elements that don’t match.
コレクションの要素を再配列します、例えば、与えられた述部にマッチする要素すべてが、合致しない要素すべての後になるなど。
Available when Base conforms to MutableCollection.BaseがMutableCollectionに準拠する時に利用可能です。
Returns a subsequence, up to the specified maximum length, containing the initial elements of the collection.
下位シーケンスを、指定された最大長まで、コレクションの冒頭の要素を含めて返します。
Returns a subsequence containing the initial elements until predicate returns false and skipping the remaining elements.predicateがfalseを返すまで冒頭の要素を含んでいて残りの要素を飛ばしている、ある下位シーケンスを返します。
Available when Base conforms to BidirectionalCollection and RangeReplaceableCollection.BaseがBidirectionalCollectionとRangeReplaceableCollectionに準拠する時に利用可能です。
Available when Base conforms to BidirectionalCollection and RangeReplaceableCollection.BaseがBidirectionalCollectionとRangeReplaceableCollectionに準拠する時に利用可能です。
Available when Base conforms to BidirectionalCollection and RangeReplaceableCollection.BaseがBidirectionalCollectionとRangeReplaceableCollectionに準拠する時に利用可能です。
Prepares the collection to store the specified number of elements, when doing so is appropriate for the underlying type.
指定された数の要素を格納するようにコレクションを準備します、そうすることが基礎をなす型に対して適切である場合には。
Available when Base conforms to RangeReplaceableCollection.BaseがRangeReplaceableCollectionに準拠する時に利用可能です。
Returns the longest possible subsequences of the collection, in order, that don’t contain elements satisfying the given predicate.
与えられた述部を満たす要素を含んでいない、このコレクションの最も長くなりうる下位シーケンスそれらを順序どおりに返します。
Returns the longest possible subsequences of the collection, in order, around elements equal to the given element.
与えられた要素と等しい要素を避けるようにして、このコレクションの最も長くなりうる下位シーケンスを、順番に返します。
Available when Base.Element conforms to Equatable.Base.ElementがEquatableに準拠する時に利用可能です。
Returns the longest possible subsequences of the sequence, in order, around elements equal to the given element.
与えられた要素と等しい要素を避けるようにして、このシーケンスの最も長くなりうる下位シーケンスを、順番に返します。
Available when Base.Element conforms to Equatable.Base.ElementがEquatableに準拠する時に利用可能です。
Returns a Boolean value indicating whether the initial elements of the sequence are the same as the elements in another sequence.
シーケンスの最初の要素らが別のシーケンスの中の要素らと同じかどうかを指し示すブール値を返します。
Available when Base.Element conforms to Equatable.Base.ElementがEquatableに準拠する時に利用可能です。
Returns a Boolean value indicating whether the initial elements of the sequence are equivalent to the elements in another sequence, using the given predicate as the equivalence test.
シーケンスの最初の要素らが別のシーケンスの中の要素らと同等かどうかを、与えられた述部を同等性テストとして使って指し示すブール値を返します。