インスタンスメソッド


withContiguousStorageIfAvailable(_:)


シーケンスの連続した記憶装置に対してクロージャを実行します。


System Swift iOS 14.0+ iPadOS 14.0+ Mac Catalyst 14.0+

macOS 11.0+ tvOS 14.0+ visionOS 1.0+ watchOS 7.0+

func withContiguousStorageIfAvailable<R>(_ body: (UnsafeBufferPointer<Self.Element>) throws -> R) rethrows -> R?




パラメータ


body

シーケンスの連続した記憶装置への UnsafeBufferPointer を受け取るクロージャ。



戻り値


シーケンスが連続した記憶装置をサポートしていない時、メソッドは body を無視して nil を返すのを除いて、body から返される値。



議論


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


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


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


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














トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ












トップへ