Protocol

RangeReplaceableCollection

A collection that supports replacement of an arbitrary subrange of elements with the elements of another collection. 随意の下位範囲の要素を別のコレクションの要素で置き換えることをサポートするコレクション。

Declaration 宣言

protocol RangeReplaceableCollection where Self.SubSequence : RangeReplaceableCollection

Overview 概要

Range-replaceable collections provide operations that insert and remove elements. For example, you can add elements to an array of strings by calling any of the inserting or appending operations that the RangeReplaceableCollection protocol defines. 範囲交換可能なコレクションは、いくつかの要素の挿入や削除を行う演算を提供します。例えば、あなたはいくつかの要素をある配列に加えることが、RangeReplaceableCollectionプロトコルが定義する何らかの挿入または追加を行う演算を呼び出すことによって可能です。


var bugs = ["Aphid", "Damselfly"]
bugs.append("Earwig")
bugs.insert(contentsOf: ["Bumblebee", "Cicada"], at: 1)
print(bugs)
// Prints "["Aphid", "Bumblebee", "Cicada", "Damselfly", "Earwig"]"

Likewise, RangeReplaceableCollection types can remove one or more elements using a single operation. 同様に、RangeReplaceableCollection型は、1つ以上の要素の削除をただ1つの演算を使って行えます。


bugs.removeLast()
bugs.removeSubrange(1...2)
print(bugs)
// Prints "["Aphid", "Damselfly"]"


bugs.removeAll()
print(bugs)
// Prints "[]"

Lastly, use the eponymous replaceSubrange(_:with:) method to replace a subrange of elements with the contents of another collection. Here, three elements in the middle of an array of integers are replaced by the five elements of a Repeated<Int> instance. 最後に、名前の元となったreplaceSubrange(_:with:)メソッドを使って、いくつかの要素からなる下位範囲を別のコレクションの内容で置き換えてください。ここでは、整数からなるある配列の真ん中の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]"

Conforming to the RangeReplaceableCollection Protocol RangeReplaceableCollectionプロトコルに準拠する

To add RangeReplaceableCollection conformance to your custom collection, add an empty initializer and the replaceSubrange(_:with:) method to your custom type. RangeReplaceableCollection provides default implementations of all its other methods using this initializer and method. For example, the removeSubrange(_:) method is implemented by calling replaceSubrange(_:with:) with an empty collection for the newElements parameter. You can override any of the protocol’s required methods to provide your own custom implementation. RangeReplaceableCollection準拠をあなたのあつらえのコレクションに加えるには、ひとつの空のイニシャライザおよびreplaceSubrange(_:with:)メソッドをあなたのあつらえの型に加えてください。RangeReplaceableCollectionは、それの他のメソッドすべての省略時の実装をこのイニシャライザとメソッドを使って提供します。例えば、removeSubrange(_:)メソッドは、replaceSubrange(_:with:)newElementsパラメータに対して空のコレクションで呼び出すことによって実装されます。あなたは、何らかのこのプロトコルの持つ必須メソッドをオーバーライドして、あなた独自のあつらえの実装を提供することができます。

Topics 話題

Creating a New Collection 新しいコレクションの作成

Adding Elements 要素の追加

Associated Types さまざまな関連型

Initializers イニシャライザ

Instance Methods インスタンスメソッド

Subscripts 添え字

Operator Functions 演算子関数

Relationships 関係

Inherits From 継承元

Inherited By 継承される先

Conforming Types これらの型が準拠

See Also 参照

Collection Mutability コレクションの可変性