19777


swiftのリファレンスで、プロトコルのメソッド等の説明で、Default Implementation
と記述されている箇所がありますが、これは何を意味しているのですか。

Protocol Extensionsが使われているという意味でしょうか？

要件が満たされたとき、protocol Extensionsで記述したものが採用されるとは、  
どういった記述でできるのでしょうか？


CC BY-SA 3.0
2015-12-04T07:39:22.840
19621
2015-12-09T02:21:32.163
2015-12-08T06:28:01.103
11148
11148
question
swift
Default Implementation swfitリファレンス


例えば、[`CollectionType`のソースコード](https://github.com/apple/swift/blob/master/stdlib/public/core/Collection.swift)を見てみると、ドキュメントのDefault
Implementationsのところに記述されている`map`は、[`CollectionType`の`extension`として実装](https://github.com/apple/swift/blob/master/stdlib/public/core/Collection.swift#L309)されています。

特定の要件が満たされた時にだけProtocol
Extensionを有効にするには、`extension`定義時に`where`で要件を指定します。例えば、[`generate`のデフォルトの実装](https://github.com/apple/swift/blob/master/stdlib/public/core/Collection.swift#L206)は、以下の様な形で定義されています。

[code]

    extension CollectionType where Generator == IndexingGenerator<Self> {
      public func generate() -> IndexingGenerator<Self> {
        return IndexingGenerator(self)
      }
    }
    
[/code]


CC BY-SA 3.0
2015-12-09T02:21:32.163
19777
2015-12-09T02:21:32.163
3066
19621
answer