Swift のプロトコルは、 Java や C# などのインタフェースのようなものと説明されることが多いですが、いくつかの違いがあります。最も大きな違いの一つが、 Swift のプロトコルはジェネリクスをサポートしていないということです。 Sequence プロトコルを例にして説明します。 Swift では、 Sequence プロトコルに適合した型は for 文で要素を取り出すことができます。 // Array は Sequence に適合 let array: Array<Int> = [2, 3, 5] for element in array { print(element) } struct Array<Element> はジェネリクスによって型パラメータを持ちますが、 Sequence は protocol Sequence<Element> のように宣言されているわけではあり