質問: swiftのリファレンスで、プロトコルのメソッド等の説明で、Default Implementation と記述されている箇所がありますが、これは何を意味しているのですか。 Protocol Extensionsが使われているという意味でしょうか? 要件が満たされたとき、protocol Extensionsで記述したものが採用されるとは、 どういった記述でできるのでしょうか?
回答: 例えば、`CollectionType`のソースコードを見てみると、ドキュメントのDefault Implementationsのところに記述されている`map`は、`CollectionType`の`extension`として実装されています。 特定の要件が満たされた時にだけProtocol Extensionを有効にするには、`extension`定義時に`where`で要件を指定します。例えば、`generate`のデフォルトの実装は、以下の様な形で定義されています。 ``` extension CollectionType where Generator == IndexingGenerator { public func generate() -> IndexingGenerator { return IndexingGenerator(self) } } ```