文書   >   Swift   >   Swift 標準ライブラリ >     Collections   >   Supporting Types   >   Slice   >   replaceSubrange(_:with:)
汎用インスタンスメソッド
replaceSubrange(_:with:)
指定された要素の部分範囲を与えられたコレクションに置き換えます。
宣言
mutating func replaceSubrange<C, R>(_ subrange: R, with newElements: C) where C : Collection, R : RangeExpression, Base.Element == C.Element, Base.Index == R.Bound
パラメータ
subrange | 置き換えるべきコレクションの部分範囲。範囲の境界は、コレクションの有効なインデックスでなければなりません。 |
newElements | コレクションに追加すべき新しい要素。 |
議論
このメソッドは、指定された範囲の要素をコレクションから削除し、新しい要素を同じ場所に挿入する効果があります。新しい要素の数は、削除される要素の数と一致する必要はありません。
この例では、整数の配列の中央にある 3 つの要素が、Repeated<Int> インスタンスの 5 つの要素に置き換えられます。
var nums = [10, 20, 30, 40, 50]
nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))
print(nums)
// Prints "[10, 1, 1, 1, 1, 1, 50]"
subrange パラメータとして長さゼロの範囲を渡す場合、このメソッドは newElements の要素を subrange.startIndex に挿入します。代わりに insert(contentsOf:at:) メソッドを呼び出すことをお勧めします。
同様に、長さゼロのコレクションを newElements パラメータとして渡す場合、このメソッドは置換せずに与えられた部分範囲内の要素を削除します。代わりに removeSubrange(_:) メソッドを呼び出すことをお勧めします。
このメソッドを呼び出すと、このコレクションで使用する既存のインデックスが無効になります。
複雑さ:O(n + m)、ここで n はこのコレクションの長さ、m は newElements の長さです。このメソッドを呼び出すだけで newElements の内容がコレクションに追加される場合、複雑さは O(m) になります。
関連
汎用の制約
C : Collection
R : RangeExpression
Self.Element == C.Element
Self.Index == R.Bound