func makeIterator () -> Self.Iterator
associatedtype Iterator
associatedtype Element
Availability
Technology
protocol Sequence
A sequence is a list of values that you can step through one at a time. The most common way to iterate over the elements of a sequence is to use a for
-in
loop:
シーケンスは値のリストで、あなたが一度に1つずつ段階処理していくことができるものです。シーケンスの要素のすべてにわたって反復するための最も一般的な方法は、for
-in
ループを使うことです:
While seemingly simple, this capability gives you access to a large number of operations that you can perform on any sequence. As an example, to check whether a sequence includes a particular value, you can test each value sequentially until you’ve found a match or reached the end of the sequence. This example checks to see whether a particular insect is in an array. 外見上は単純である一方、この能力はあなたにたくさんの演算へのアクセスを与え、それはあなたがあらゆるシーケンス上で実行可能です。1つの例として、あるシーケンスが特定の値を含むかどうか確認するために、あなたは各値を順次テストすることが、あなたが一致するものを見つけるかそのシーケンスの終わりに達するまで行えます。この例は、ある特定の昆虫が配列の中にあるかどうか見るために調べます。
The Sequence
protocol provides default implementations for many common operations that depend on sequential access to a sequence’s values. For clearer, more concise code, the example above could use the array’s contains(_:)
method, which every sequence inherits from Sequence
, instead of iterating manually:
Sequence
プロトコルは、シーケンスのもつ値への順次的なアクセスを頼りにするような多くの一般的な演算に対して省略時の実装を提供します。より明確な、もっと簡潔なコードのために、上のコードは、すべてのシーケンスがSequence
から継承する、配列のもつcontains(_:)
メソッドを使うことが、労力を要する反復の代わりに可能です:
The Sequence
protocol makes no requirement on conforming types regarding whether they will be destructively consumed by iteration. As a consequence, don’t assume that multiple for
-in
loops on a sequence will either resume iteration or restart from the beginning:
Sequence
プロトコルは、準拠する型に関して、それらが反復によって破壊的に消費されることになるかについて要件を設けません。結果として、あるシーケンス上での複数のfor
-in
ループが反復を途中から再開するかまたは初めから再度着手するか、どちらかを決めてかからないでください:
In this case, you cannot assume either that a sequence will be consumable and will resume iteration, or that a sequence is a collection and will restart iteration from the first element. A conforming sequence that is not a collection is allowed to produce an arbitrary sequence of elements in the second for
-in
loop.
この場合、あるシーケンスが消耗可能になっているそして反復を再開することになるか、またはあるシーケンスがコレクションであるそして最初の要素から反復を再度着手することになるか、あなたはどちらか決めてかかることはできません。準拠しているシーケンスでコレクションではないものは、2番目のfor
-in
ループにおいて幾つかの要素からなる随意のシーケンスを生み出すことを許可されます。
To establish that a type you’ve created supports nondestructive iteration, add conformance to the Collection
protocol.
あなたが作成した型が非破壊反復をサポートすることを確立するには、Collection
プロトコルに対する準拠を加えてください。
Making your own custom types conform to Sequence
enables many useful operations, like for
-in
looping and the contains
method, without much effort. To add Sequence
conformance to your own custom type, add a make
method that returns an iterator.
あなたのあつらえの型をSequence
に準拠させることは、多くの有用な演算能力を与えます、for
-in
ループおよびcontains
メソッドのように、あまり苦労せずに。Sequence
準拠をあなた独自のあつらえの型に加えるには、あるイテレータを返すmake
メソッドを加えてください。
Alternatively, if your type can act as its own iterator, implementing the requirements of the Iterator
protocol and declaring conformance to both Sequence
and Iterator
are sufficient.
あるいはまた、あなたの型がそれ自身イテレータとして振る舞うならば、Iterator
プロトコルの要件を実装することとSequence
およびIterator
の両方に対する準拠を宣言することで十分です。
Here’s a definition of a Countdown
sequence that serves as its own iterator. The make
method is provided as a default implementation.
ここにCountdown
シーケンスの定義があります、それはそれ自身イテレータとしての務めを果たします。make
メソッドは、省略時の実装として提供されます。
A sequence should provide its iterator in O(1). The Sequence
protocol makes no other requirements about element access, so routines that traverse a sequence should be considered O(n) unless documented otherwise.
シーケンスはそれのイテレータをO(1)で提供すべきです。Sequence
プロトコルは要素アクセスについて他の要件を設けません、それでシーケンスを辿っていくおきまりの仕事はO(n)と考えるべきです、そうでないと文書化されるのでない限り。
func makeIterator () -> Self.Iterator
associatedtype Iterator
associatedtype Element
func contains(Self.Element) -> Bool
Element
conforms to Equatable
.
Element
がEquatable
に準拠する時に利用可能です。
func contains(where: (Self.Element) -> Bool) -> Bool
func allSatisfy ((Self.Element) -> Bool) -> Bool
func first(where: (Self.Element) -> Bool) -> Self.Element?
func min() -> Self.Element?
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func min(by: (Self.Element, Self.Element) -> Bool) -> Self.Element?
func max() -> Self.Element?
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func max(by: (Self.Element, Self.Element) -> Bool) -> Self.Element?
func prefix(Int) -> PrefixSequence<Self>
func prefix(while: (Self.Element) -> Bool) -> [Self.Element]
func suffix(Int) -> [Self.Element]
func dropFirst (Int) -> DropFirstSequence<Self>
func dropLast (Int) -> [Self.Element]
func drop(while: (Self.Element) -> Bool) -> DropWhileSequence<Self>
func filter((Self.Element) -> Bool) -> [Self.Element]
func map<T>((Self.Element) -> T) -> [T]
func compactMap <ElementOfResult>((Self.Element) -> ElementOfResult?) -> [ElementOfResult]
nil
results of calling the given transformation with each element of this sequence.
指定された変換をこのシーケンスの各要素で呼び出す結果で非-nil
のものを含んでいる配列を返します。
func flatMap <SegmentOfResult>((Self.Element) -> SegmentOfResult) -> [SegmentOfResult.Element]
func reduce<Result>(Result, (Result, Self.Element) -> Result) -> Result
func reduce<Result>(into: Result, (inout Result, Self.Element) -> ()) -> Result
var lazy: LazySequence<Self>
map
and filter
, are implemented lazily.
このシーケンスと同じ要素を含んでいるシーケンス、しかしそれの上で何らかの演算、例えばmap
やfilter
が遅延に実装されます。
func flatMap <ElementOfResult>((Self.Element) -> ElementOfResult?) -> [ElementOfResult]
nil
results of calling the given transformation with each element of this sequence.
指定された変換をこのシーケンスの各要素で呼び出す結果で非-nil
のものを含んでいる配列を返します。
func forEach ((Self.Element) -> Void)
for
-in
loop.
指定されたクロージャをそのシーケンスの各要素上でfor
-in
ループと同じ順番で呼び出します。
func enumerated() -> EnumeratedSequence<Self>
var underestimatedCount : Int
func sorted() -> [Self.Element]
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func sorted(by: (Self.Element, Self.Element) -> Bool) -> [Self.Element]
func reversed() -> [Self.Element]
func shuffled() -> [Self.Element]
func shuffled<T>(using: inout T) -> [Self.Element]
func formatted() -> String
Element
is String
.
Element
がString
である時に利用可能です。
func formatted<S>(S) -> S.FormatOutput
struct ListFormatStyle
func split(maxSplits : Int, omittingEmptySubsequences : Bool, whereSeparator : (Self.Element) -> Bool) -> [ArraySlice<Self.Element>]
func split(separator: Self.Element, maxSplits : Int, omittingEmptySubsequences : Bool) -> [ArraySlice<Self.Element>]
Element
conforms to Equatable
.
Element
がEquatable
に準拠する時に利用可能です。
func joined() -> FlattenSequence<Self>
Element
conforms to Sequence
.
Element
がSequence
に準拠する時に利用可能です。
func joined(separator: String) -> String
Element
conforms to StringProtocol
.
Element
がStringProtocol
に準拠する時に利用可能です。
func joined<Separator>(separator: Separator) -> JoinedSequence<Self>
Element
conforms to Sequence
.
Element
がSequence
に準拠する時に利用可能です。
func elementsEqual <OtherSequence>(OtherSequence) -> Bool
Element
conforms to Equatable
.
Element
がEquatable
に準拠する時に利用可能です。
func elementsEqual <OtherSequence>(OtherSequence, by: (Self.Element, OtherSequence.Element) -> Bool) -> Bool
func starts<PossiblePrefix>( with: PossiblePrefix) -> Bool
Element
conforms to Equatable
.
Element
がEquatable
に準拠する時に利用可能です。
func starts<PossiblePrefix>( with: PossiblePrefix, by: (Self.Element, PossiblePrefix.Element) -> Bool) -> Bool
func lexicographicallyPrecedes <OtherSequence>(OtherSequence) -> Bool
<
) to compare elements.
そのシーケンスが別のシーケンスの前に来るかどうかを、ある語彙筆記的順序(字典)順序において、より小さい演算子(<
)を使って要素を比較して、指し示すブール値を返します。
Element
conforms to Comparable
.
Element
がComparable
に準拠する時に利用可能です。
func lexicographicallyPrecedes <OtherSequence>(OtherSequence, by: (Self.Element, Self.Element) -> Bool) -> Bool
func withContiguousStorageIfAvailable <R>((UnsafeBufferPointer<Self.Element>) -> R) -> R?
var publisher: Publishers.Sequence<Self, Never>
func fill(using: NSCompositingOperation)
Element
is NSRect
.
Element
がNSRect
である時に利用可能です。
func fill(using: NSCompositingOperation)
Element
is (CGRect, gray: CGFloat)
.
Element
が(CGRect, gray: CGFloat)
である時に利用可能です。
func fill(using: NSCompositingOperation)
Element
is (CGRect, NSColor)
.
Element
が(CGRect, NSColor)
である時に利用可能です。
func clip()
Element
is NSRect
.
Element
がNSRect
である時に利用可能です。
AES.GCM.Nonce
AVCaptureSynchronizedDataCollection
AnimationTimelineSchedule.Entries
AnyIterator
AnySequence
Binding
Value
conforms to MutableCollection
.
Value
がMutableCollection
に準拠する時に準拠します。
CKRecord
CMBufferQueue.Buffers
CMSampleBuffer.PerSampleAttachmentsDictionary
CMSampleBuffer.SingleSampleBuffers
ChaChaPoly.Nonce
Dictionary
DispatchDataIterator
DropFirstSequence
DropWhileSequence
EmptyCollection
EmptyCollection.Iterator
Entity.ChildCollection.IndexingIterator
ApplicationMusicPlayer.Queue.Entries
EnumeratedSequence
EnumeratedSequence.Iterator
EveryMinuteTimelineSchedule.Entries
FlattenSequence
FlattenSequence.Iterator
IndexingIterator
IteratorSequence
JoinedSequence
LazyDropWhileSequence
LazyFilterSequence
LazyFilterSequence.Iterator
LazyMapSequence.Iterator
LazyPrefixWhileSequence
LazyPrefixWhileSequence.Iterator
LazySequence
MIDIEventList.UnsafeSequence
MIDIEventPacket.WordSequence
MIDIPacket.ByteSequence
MIDIPacketList.UnsafeSequence
MTLLogContainer
MeshBuffer
MeshInstanceCollection
MeshModelCollection
MeshPartCollection
NSArray
NSDictionary
NSEnumerator
NSIndexSet
NSOrderedSet
NSSet
PKStrokePath.InterpolatedSlice
PrefixSequence
QueryResult
ReversedCollection
ReversedCollection.Iterator
Set
StrideThrough
StrideTo
UnfoldSequence
UnsafeBufferPointer
UnsafeMutableBufferPointer
UnsafeMutableMIDIEventListPointer
UnsafeMutableMIDIEventPacketPointer
UnsafeMutableMIDIPacketListPointer
UnsafeMutableMIDIPacketPointer
UnsafeMutableRawBufferPointer
UnsafeRawBufferPointer
UnsafeRawBufferPointer.Iterator
Zip2Sequence
protocol Collection