汎用インスタンスメソッド


withContiguousStorageIfAvailable(_:)


シーケンスの連続した保管場所に対してクロージャを実行します。


iOS 15.0+ iPadOS 15.0+ macOS 12.0+ Mac Catalyst 15.0+

tvOS 15.0+ watchOS 8.0+ visionOS 1.0+ Xcode 13.0+

func withContiguousStorageIfAvailable<R>(_ body: (UnsafeBufferPointer<Run>) throws -> R) rethrows -> R?





パラメータ


body

シーケンスの連続した保管場所への UnsafeBufferPointer を受け取るクロージャ。



戻り値


シーケンスが連続した保管場所をサポートしていない限り、body から返される値。その場合、メソッドは body を無視して nil を返します。


議論


このメソッドは body(buffer) を呼び出します。ここで、buffer はコレクションの連続した保管場所へのポインタです。連続した保管場所が存在しない場合は、コレクションが作成します。コレクションが連続した保管場所の形式での内部表現をサポートしていない場合、メソッドは body を呼び出さず、すぐに nil を返します。


最適化処理は多くの場合、アルゴリズム内の境界と一意性のチェックを排除できます。ただし、それが失敗した場合は、buffer 引数で同じアルゴリズムを呼び出すことで、安全性を優先して速度を犠牲にすることができる場合があります。


このメソッドを連続して呼び出すと、呼び出しごとに異なるポインタが提供される場合があります。このメソッドの外に buffer を保存しないでください。


このメソッドの独自の実装を提供する Collection は、コレクション内に出現するのと同じ順序でその要素に連続した保管場所を提供しなければなりません。これにより、サブシーケンスの startIndexendIndex それぞれまでの距離から形成される範囲で buffer をスライスすることにより、そのサブシーケンスのいずれかに連続した可変保管場所を生成できることが保証されます。


注意


このドキュメントのコメントは Sequence から継承されました。















トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ