17097


例えば、あるクラスでAプロトコルを採用した場合、  
プロトコルの宣言内容に沿って、  
クラスの内にインスタンスメソッド・プロパティ等を定義します。

しかし演算子のプロトコル（例えば、Equatable, Comparableなど）を採用した場合、  
定義は、グローバル関数として実装します。

なにか仕様的に矛盾している感じがあり、理解できません。

演算子のプロトコルを採用した場合、実装がグローバル関数でよいのか、教えてください。


CC BY-SA 3.0
2015-09-30T05:49:16.687
17091
2015-09-30T08:36:22.377
11148
question
swift
演算子のプロトコルについて


一般のプロトコルは、そのクラスに「機能」を付加したい時に使うのでクラス内で実装を行いますが、演算子は、そのクラスと別の何か(同じクラスかもしれないし別のクラスかもしれない)との「関係」を付加したい時に使うので、そのクラスの外で定義した方が自然ではないでしょうか。  


CC BY-SA 3.0
2015-09-30T08:36:22.377
17097
2015-09-30T08:36:22.377
8077
17091
answer